java基础知识八(面向对象三,final,static,abstract,接口)

第1章 final和static关键字

1.1 final关键字的概述及特点

final关键字是最终的意思,可以修饰类,成员变量,成员方法。
  • 修饰类,类不能被继承
  • 修饰变量,变量就变成了常量,只能被赋值一次
  • 修饰方法,方法不能被重写

1.2 static关键字的概述及特点

1.2.1 静态的概述
当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?
可以的,我们可以通过static关键字来实现。static它是静态修饰符,一般用来修饰类中的成员。

1.2.2 静态的特点

  • 被类的所有对象共享
    这也是我们判断是否使用静态关键字的条件
  • 可以通过类名调用
  • 优先于对象存在
  • 随着类的加载而加载

1.3 static方法的访问特点及注意事项

静态方法的访问特点:
  • 静态方法只能访问静态的成员变量和静态的成员方法

静态方法的注意事项:

  • 在静态方法中是没有this,super关键字的
  • 静态的内容是随着类的加载而加载,this和super是随着对象的创建而存在。

第2章 抽象类

2.1 抽象类概述

当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具回想前面我们的猫狗案例,提取出了一个动物类,这个时候我们是可以通过Animal a = new Animal()来创建动物对象的,其实这是不对的。为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。 所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是应该给出一个声明即可。在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

public abstract class Animal {
	
	//抽象方法
	public abstract void eat();
}

2.2 抽象类的特点

抽象类和抽象方法必须用abstract关键字修饰

格式:

  • public abstract class 类名 {}
  • public abstract void eat();
  • 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
  • 抽象类不能实例化
  • 那么,抽象类如何实例化呢?
  • 按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
  • 抽象类的子类
    要么是抽象类
    要么重写抽象类中的所有抽象方法

2.3 抽象类的成员的特点

• 成员变量
可以是变量
也可以是常量
• 构造方法
有构造方法,但是不能实例化
那么,构造方法的作用是什么呢?
用于子类访问父类数据的初始化
• 成员方法
可以有抽象方法,限定子类必须完成某些动作
也可以有非抽象方法,提高代码复用性

public class PersonDemo {
	public static void main(String[] args) {
		Person p = new Student();
		p.show();
	}
}
package com.itheima_03;

public class Student extends Person {

	@Override
	public void eat() {
		System.out.println("学生吃米饭");
	}
	
}



public abstract class Person {
	private int age = 20;
	private final String country = "中国";
	
	public Person() {}
	
	public Person(int age) {
		this.age = age;
	}
	
	public void show() {
		age = 30;
		System.out.println(age);
		//country = "美国";
		System.out.println(country);
	}
	
	public abstract void eat();
}

第3章 接口的概述

3.1 接口的概述

  • 为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现,将来哪些猫狗需要被训练,只需要这部分猫狗把这些额外功能实现即可

3.2 接口的特点

  • 接口用关键字interface表示
    格式:public interface 接口名 {}
  • 类实现接口用implements表示
    格式:public class 类名 implements 接口名 {}
  • 接口不能实例化
    那么,接口如何实例化呢?
    按照多态的方式,由具体的实现类实例化。其实这也是多态的一种,接口多态。
  • 接口的实现类
    要么是抽象类
    要么重写接口中的所有抽象方法

3.3 接口的成员特点

  • 成员变量
    只能是常量
    默认修饰符 public static final
  • 构造方法
    没有,因为接口主要是扩展功能的,而没有具体存在
  • 成员方法
    只能是抽象方法
    默认修饰符 public abstract

3.4 类与类_类与接口_接口与接口的关系

  • 类与类
    继承关系,只能单继承,但是可以多层继承
  • 类与接口
    实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
  • 接口与接口
    继承关系,可以单继承,也可以多继承

3.5 抽象类与接口的区别

  • 成员区别
    抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
    接口 常量;抽象方法
  • 关系区别
    类与类 继承,单继承
    类与接口 实现,单实现,多实现
    接口与接口 继承,单继承,多继承
  • 设计理念区别
    抽象类 被继承体现的是:”is a”的关系。共性功能
    接口 被实现体现的是:”like a”的关系。扩展功能

3.6 接口的练习之运动员和教练案例分析

在这里插入图片描述

第4章 包的概述和权限修饰符

4.1 包的概述和注意事项

4.1.1 包的概述

  • 其实就是文件夹
  • 作用:对类进行分类管理
  • 包的划分
    举例:
    学生的增加,删除,修改,查询
    老师的增加,删除,修改,查询
    以及以后可能出现的其他的类的增加,删除,修改,查询
    基本的划分:按照模块和功能分。
    高级的划分:就业班做项目的时候你就能看到了。
    4.1.2 定义包的格式
  • package 包名;
    多级包用.分开即可
  • 注意事项:
    package语句必须是程序的第一条可执行的代码
    package语句在一个java文件中只能有一个

4.2 导包的格式及使用

4.2.1 导包概述
不同包下的类之间的访问,我们发现,每次使用不同包下的类的时候,都需要加包的全路径。比较麻烦。这个时候,java就提供了导包的功能。
4.2.2 导包格式
import 包名;

4.3 四种权限修饰符的概述和访问特点

在这里插入图片描述
归纳一下:在日常开发过程中,编写的类、方法、成员变量的访问

  • 要想仅能在本类中访问使用private修饰
  • 要想本包中的类都可以访问除了private修饰符,其它都可以
  • 要想本包中的类与其他包中的子类可以访问使用protected修饰
  • 要想所有包中的所有类都可以访问使用public修饰。
发布了30 篇原创文章 · 获赞 10 · 访问量 889

猜你喜欢

转载自blog.csdn.net/weixin_45788152/article/details/104247070