Java开发之路(2)——Java基础

一.记录多态的学习

1.多态的概念:多种形态、多种状态。一个引用变量可以引用多个不同的对象。父类的引用可以指向子类的任意对象。
2.我对多态的理解:通过父类的引用代表任意子类的对象,通过父类的引用可以实现执行到子类中不同的方法,多态很多时候就是基于方法的重写来实现的。(父类引用调用的时候是使用父类方法实现调用,实现这个方法的时候是子类自己重写的方法。)

方法的重载也是一多态的体现,同样的代码,执行路径不一样也能体现多态。

3.下面引用一个简单的例子,加深自己对多态的理解。

package Java_0713;

public class Duotai {
	public static void main(String[] args) {
	GoodStudent 安逸 = new GoodStudent();
	BadStudent 神秘的天 = new BadStudent();
	/*Student 安逸 = new GoodStudent();
	Student 神秘的天 = new BadStudent();
	*/
	安逸.study();
	神秘的天.study();
	}
}

class Student{
	public void study() {
		System.out.println("学习");
	}
}

class GoodStudent extends Student{
	public void study() {
		System.out.println("掉头发学习");
	}
}

class BadStudent extends Student{
	public void study() {
		System.out.println("美人在侧式学习");
	}
}
	GoodStudent 安逸 = new GoodStudent();
	BadStudent 神秘的天 = new BadStudent();
		安逸.study();
		神秘的天.study();

安逸和神秘的天都是调用子类的study

 	Student 安逸 = new GoodStudent();
	Student 神秘的天 = new BadStudent();
	安逸.study();
	神秘的天.study();

安逸和神秘的天被声明为父类Student,他们调用的方法是父类的study,但是在运行的时候都是子类的方法
4.转型
向上转型:子类转父类
向下转型:父类转子类

转的是对象的声明,不是对象本身

5.多态的细节总结
(1)成员变量:调用还是运行都是看左边
(2)成员方法:调用的时候看左边(声明);运行的时候看右边(new 对象)

当子类中没有的时候,会默认运行父类中的方法

(3)静态方法:调用还是运行都是看左边
(静态方法属于类,声明的是哪个类就属于哪个类)

下面提供一个小案例来总结以上知识

public class Duotaitest2 {
	public static void main(String[] args) {
		Y y = new Y();
		y.printValue();//输出Y
		X x = (X)y;  //相当于X x = new Y();
		y.printValue();//输出Y
		x.printValue();//输出Y
		x = new X();
		x.printValue();//输出X
	}
}

class X{
	public void printValue() {
		System.out.println("X");
	}
}

class Y extends X{
	public void printValue() {
		System.out.println("Y");
	}
}

二.final关键字

final代表最终的,不可变的
1.final变量
(1)final成员变量:在声明的时候必须给变量赋值(原因:成员变量有默认初始值0),声明和初始化是一个步骤。
(2)final局部变量:声明和初始化是两个步骤
(3)final引用类型变量:
2.final方法:该方法不可变,方法不能被重写
3.final类:该类不能被继承
String类是一个final,String字符串不可变。String a = “abc”,a = a+“c”;,指的是字符串常量池中abc不会变,在堆里面会生成abcc。(String类的不可变性)

三.抽象类和接口的关系(实现关系,多实现)

抽象类一定是父类
接口一定要被实现
抽象类:对具体的实体的抽象的提取。如门。
所有的子类应该符合抽象类的定义。
接口:对功能的扩展。

1.接口(interface):比抽象类还抽象的类。接口中的方法所有的方法都是抽象方法(默认且只能使用public&abstract修饰方法)。接口和类的关系是实现,implements,一个类要实现接口必须实现它所有的类,提供很多规则。
(1)接口成员的特点:
成员方法:默认且只能使用public&abstract修饰方法。
成员变量:默认使用 public static final 修饰成员变量。
(2)Collection<>接口:超级接口,具备所有集合功能的接口(集合是用来存储、删除数据的,下一个知识点再详谈。)
(3)接口的优点(模块化开发):
a.一个类可以实现多个接口。
b.解耦:降低了程序耦合性,提高开发效率。
c.对外提供接口。
2.接口和抽象类的区别
共性:不断的抽取出抽象的概念。
区别1:与类的关系
   类与接口是实现关系,而且是多实现,一个类可以实现多个接口。
   类与抽象类是继承关系,Java中的继承是单一继承,也是多层继承,一个类只能继承一个类。
区别2:成员
   成员变量:
       抽象类可以有成员变量,也可以有常量。
       接口只能有常量。
   成员方法:
       抽象类可以有抽象方法,也可以有非抽象方法。
       接口只能有抽象方法,方法默认修饰符 public abstract。
   构造方法:
       抽象类有构造方法。
       接口没有构造方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值