第九天笔记

形参:存在于方法中 public void 方法名(int a) 此处int a 为形参,不被调用没有意义

实参:在运行时,具有真实参数,int a = 10 ;

对于基本类型,形参打改变不影响实参;

对于引用类型:形参的改变,会影响实参;因为引用类型的改变发生在堆中,在堆中值的改变是会影响到实参的,

== 这个符号是对比的地址值

多态: 事物的多种形态

特点: 父类引用指向子类对象 基于继承和重写 不能调用子类中的为重写方法

格式:(向上转型) 父类名 对象名=new 子类名();

​ Person p =new teacher();

​ (向下转型) 子类名 新对象名 =(子类名) 上转型对象名(在向上转型时,想要调用子类方法不行进行向下转型

​ Teacher t =(theacher)P;

向上转型:在同名的情况下调用时 父类有:成员变量,静态方法,构造方法,静态方法 子类:成员方法

向上转型:在同名的情况下调用时 子类有:成员变量,静态方法,成员方法,静态变量,

编译期:就是在编写代码的时间; 父类没有的,子类有的 进行向下转型

编译看左边,运行看右边,右边没有 去父类

成员变量
编译看左边,运行看左边
成员方法
编译看左边,运行看右边
静态方法
编译看左边,运行看左边

以后常见的多态形式

父类子类中出现相同的类型,然后将父类中创建一个对象作为形参,然后在这个形参中调用父类的方法

public class Text2 { public static void main(String[] args) { Cat cat = new Cat(); cat.eat(); Dogs dog = new Dogs(); dog.eat(); Animals a = new Dogs();//向上转型 a.eat(); Dogs d = (Dogs)a;//向下转型 d.run(); //这是mian方法中的形式 getAni(dog); } //这是常见的多态形式 public static void getAni(Animals ani) { ani.eat(); } } class Animals{ public void eat() { System.out.println("动物需要吃饭"); } } class Cat extends Animals{ public void eat() { System.out.println("猫吃鱼"); } } class Dogs extends Animals{ public void eat() { System.out.println("狗吃骨头"); } public void run() { System.out.println("狗会跑"); } } 

抽象类: 没有方法体的类叫做抽象类

关键字 abstract(抽象的)

抽象方法:没有方法体的方法叫做抽象方法

abstract class 类名{ public abstract void 方法名(){ }} 

如果一个类中继承一个抽象类,必须把未实现的抽象方法完成

抽象类 的特点:

1抽象类比一定有抽象方法;抽象方法一定在抽象类中

2抽象类不能创建对象,需要使用子类上转型

3抽象的子类要么实现抽象类中的所有的抽象方法,要么自己是一个抽象类

4抽象类有构造方法 但是仅是给子类对象初始化的 不能自身创造对象

5 abstract与final不能共存,因为abstract 是必须继承的,而final是不可以被继承的

组合类

在类里面 需要自己定义一个类来代表其中的某些变量,则在什么一个类在在原类中声明该类

class man{string a; phonr b;}

class phone {string c;}

接口:将新的方法定义之后姜磊实现的过程

格式:interface 接口名 {抽象方法}

例:interface Arr{publice abstrct void reraseArr();}

在接口中,修饰符可以省略,因为修饰符中的方法,全部都是抽象方法

implements:接口放下类中叫做实现

可以多实现;也可以多态,

接口名 对象名=new 类();

注意事项:

​ 1. 接口中只能定义常量,默认public static final修饰

​ 2. 接口中只能定义抽象方法(1.8之前) 默认是public abstract 修饰

​ 3. 接口不能创建对象,使用子类向上转型

​ 4. 接口的子类: 实现了接口的类 class 子类名 implements 接口1,接口2{}

​ 5. 接口的子类要么实现接口中所有的抽象方法要么自己是一个抽象类

​ 6. 一个类可以实现多个接口,并且可以在继承类的同时实现多个接口

​ 7. 接口中没有构造方法

​ 8. jdk8之后接口中可以定义已经实现的方法,但是必须使用static/default 修饰

​ 9. 接口不能实现接口,只能继承接口,并且可以多继承

​ class 子类名 implements 接口1,接口2{}

抽象类和接口的区别:

1.一个类最多只能继承一个抽象类,但是可以实现多个接口

2.抽象类中既可以定义变量也可以定义常量,接口中只能定义常量

3.抽象类中既可以定义抽象方法,也可以定义非抽象方法,接口中能定义抽象方法(jdk8之前)

4.接口中没有构造方法,抽象类中有构造方法

5.接口只能继承接口不能实现接口,并且可以多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值