学习Java进度总结(三)

目录

1、super关键字与this关键字的区别

2、static关键字

3、Java的三要素:封装、继承、多态

4、抽象

5、接口

6、抽象类与接口的区别

7、内部类

8、四种权限修饰符


super是一个关键字,代表父类的存储空间标识。(可以理解为父亲的引用)

super和this的用法相似:

1、this代表对象的引用(谁调用就代表谁);
2、super代表当前子类对父类的引用。

2、static关键字

1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来

2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来

3、static修饰的对象,生命周期跟类相同,在类创建时同时static对象也被创建。

3、Java的三要素:封装、继承、多态

封装:

在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装的优点:

  • 1. 良好的封装能够减少耦合。

  • 2. 类内部的结构可以自由修改。

  • 3. 可以对成员变量进行更精确的控制。

  • 4. 隐藏信息,实现细节。

封装步骤:

1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:

public class Person {
    private String name;
    private int age;
}
//将 name 和 age 属性设置为私有的,只能本类才能访问
//其他类都访问不了,如此就对信息进行了隐藏。

2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

public class Person{
    private String name;
    private int age;
​
    public int getAge(){
      return age;
    }
​
    public String getName(){
      return name;
    }
​
    public void setAge(int age){
      this.age = age;
    }
​
    public void setName(String name){
      this.name = name;
    }
}

采用this关键字是为了解决实例变量和局部变量之间发生的同名的冲突。

继承:

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。

子类可以直接访问父类中的非私有的属性和行为。

通过 extends 关键字让类与类之间产生继承关系。

class SubDemo extends Demo{}    //SubDemo是子类,Demo是父类

继承的好处

  • 提高代码的复用性。
  • 让类与类之间产生了关系,是多态的前提。

Java继承的特点:

  • Java只支持单继承,不支持多继承。
  • Java支持多层继承。

使用继承时的注意事项:

  • 如果类之间存在着:is a 的关系,就可以考虑使用继承。

  • 不要为了继承部分功能,而去使用继承。

方法的重写:

子类中出现与父类一模一样的方法时(除了权限修饰符,权限修饰符大于等于不包括private,返回值类型,方法名和参数列表相同),会出现覆盖操作。

父类私有方法,子类无法继承,也就无法重写。

多态:

概念

对象在不同时刻表现出来的不同状态。

多态的前提

  • 要有继承或者实现关系。
  • 要有方法的重写。
  • 要有父类引用指向子类对象。

好处和作用
多态的存在提高了程序的扩展性和后期可维护性。

弊端:

无法调用子类特有的功能。

多态的成员特点

成员变量:编译和运行都看等号左边。

成员方法:编译看左边运行看右边。

静态方法:编译时期:编译和运行都看等号左边。

一定不能够将父类的对象转换成子类类型!

父类的引用指向子类对象,该引用可以被提升,也可以被强制转换

多态自始至终都是子类对象在变化!

4、抽象

抽象就是从多个事物中将共性的,本质的内容抽象出来。

抽象类

Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。

抽象类特点

  1. 抽象方法一定在抽象类中;
  2. 抽象方法和抽象类都必须被abstract关键字修饰;
  3. 抽象类不可以用new创建对象,因为调用抽象方法没意义;
  4. 抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用; 如果子类只覆盖了部分的抽象方法,那么该子类还是一个抽象类;
  5. 抽象类中可以有抽象方法,也可以有非抽象方法,抽象方法用于子类实例化;
  6. 如果一个类是抽象类,那么,继承它的子类,要么是抽象类,要么重写所有抽象方法。
    特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。

抽象类的成员特点

  • 成员变量:可以是变量,也可以是常量;
  • 构造方法:有构造方法;
  • 成员方法:可以是抽象方法,也可以是非抽象方法。

抽象关键字abstract不可以和哪些关键字共存?

  • final:如果方法被抽象,就需要被覆盖,而final是不可以被覆盖,所以冲突。
  • private:如果函数被私有了,子类无法直接访问。
  • static:不需要对象,类名就可以调用抽象方法,那么调用抽象方法就失去了意义。

5、接口

接口是抽象方法和常量值的集合。

格式:interface 接口名{}

实现(implements)

格式:class 类名 implements 接口名 {}

接口的出现将"多继承"通过另一种形式体现出来,即"多实现"。

特点

  • 接口不能被实例化。
  • 一个类如果实现了接口,要么是抽象类,要么实现接口中的所有方法。

接口的成员特点

接口中的成员修饰符是固定的!

  • 成员常量:public static final,接口里定义的变量是全局常量,而且修饰符只能是这三个关键字,都可以省略,常量名要大写。
  • 成员方法:public abstract,接口里定义的方法都是抽象的,两个修饰符关键字可省略。

接口的思想特点

  1. 接口是对外暴露的规则;
  2. 接口是程序的功能扩展
  3. 接口的出现降低耦合性;(实现了模块化开发,定义好规则,每个人实现自己的模块,大大提高了开发效率)
  4. 接口可以用来多实现
  5. 多个无关的类可以实现同一个接口;
  6. 一个类可以实现多个相互直接没有关系的接口;
  7. 与继承关系类似,接口与实现类之间存在多态性

6、抽象类与接口的区别

成员变量

  • 抽象类能有变量也可以有常量
  • 接口只能有常量

成员方法

  • 抽象类可以有非抽象的方法,也可以有抽象的方法
  • 接口只能有抽象的方法

构造方法

-抽象类有构造方法
-接口没有构造方法

类与抽象类和接口的关系

  • 类与抽象类的关系是继承 extends
  • 类与接口的关系是实现 implements

7、内部类

将一个类定义在另一个类里面,里面的那个类就称为内部类。内部类的出现,再次打破了Java单继承的局限性。

访问特点

  • 内部类可以直接访问外部类的成员,包括私有成员。
  • 外部类要访问内部类的成员,必须要建立内部类的对象。
    内部类分类及共性

共性

  • 内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。
  • 内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。

成员内部类

在外部类中有成员变量和成员方法,成员内部类就是把整个一个类作为了外部类的成员;
成员内部类是定义在类中方法外的类;
创建对象的格式为:外部类名.内部类名 对象名 = 外部类对象.内部类对象
成员内部类之所以可以直接访问外部类的成员,那是因为内部类中都持有一个外部类对象的引用:外部类名.this
成员内部类可以用的修饰符有final,abstract,public,private,protected,static.

静态内部类

静态内部类就是成员内部类加上静态修饰符static,定义在类中方法外

在外部类中访问静态内部类有两种场景:

  • 在外部类中访问静态内部类中非静态成员:*外部类名.内部类名 对象名 = 外部类名.内部对象*,需要通过创建对象访问;
  • 在外部类中访问静态内部类中的静态成员:同样可以使用上面的格式进行访问,也可以直接使用外部类名.内部类名.成员

局部内部类

局部内部类是定义在方法中的类。

  • 方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
  • 方法内部类对象不能使用该内部类所在方法的非final局部变量。

可以用于方法内部类的修饰符有final,abstract

静态方法中的方法内部类只能访问外部的静态成员

匿名内部类

匿名内部类是内部类的简化写法,是建立一个带内容的外部类或者接口的子类匿名对象。
前提:
内部类可以继承或实现一个外部类或者接口。
格式:
new 外部类名或者接口名(){重写方法};

8、四种权限修饰符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值