ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day30

2021-08-10 21:32:33  阅读:170  来源: 互联网

标签:子类 多态 接口 day30 抽象类 父类 public


今天看了类的一些内容包括继承,多态,还有接口

类的继承
格式:public class 子类名 extends 父类名 {}
当子类和父类有一个相同变量age时,从子类中访问父类的相同变量用super.age
super()//访问父类的构造方法
super.成员方法()//访问父类成员方法
子类所有构造方法默认都会访问父类中无参的构造方法
成员方法中可调用其他成员方法

一个包中有Teacher类,现在在另一个包内写测试类
若要创建Teacher对象,需给个导包:import 包名.类名;然后就可正常使用该类

同一个包下:不论是子类还是无关类除private不可访问外,其他都可访问
不同包下:子类可访问另一个包中父类的保护和公有,无关类只能访问公有

若父类中有个方法,则子类中不可存在同名方法 public final void show(){}
若final修饰变量,则该变量为常量 public final int age;
若final修饰类,则该类不存在子类 public final class show{}

static修饰特点:类的所有对象共有的成员和方法
可在主函数通过类名.变量名来赋值
静态成员方法只能访问静态成员

多态p171
多态的前提
1.有继承或实现关系
2.有方法重写
3.有父(类/接口)引用指向(子/实现)类对象
成员变量:编译看左边,执行看左边;
成员方法:编译看左边(即父类中有没有当前方法),执行看右边(输出子类的数据)
public class Zi extends Fu{}
Fu f = new Zi();//父类的引用指向子类对象(向上转型)
Zi z = (Fu)f;//(向下转型)强制转换
好处:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
弊端:不能使用子类的特有功能

抽象类:含抽象方法的类
抽象方法:没有方法体
public abstract class 类名
{
public abstract void 方法名();
}
抽象类不能直接创建对象,可以再创建一个子类,再用多态(父类引用子类)创建对象调用
抽象类的子类必须重写所有父类的抽象方法(不用加abstract)或定义子类为抽象类(加abstract)
抽象类不一定有抽象方法,有抽象方法的一定是抽象类
抽象类中有构造函数但不能实例化

java接口:对行为进行抽象(抽象方法)
public interface 接口名{}
可以再接口中直接定义一个抽象方法
类不能继承接口,用implements(实现)public class 类名 implements 接口名{}
接口也不能实例化,但可通过多态实现对象实例化(接口多态)

1.接口中无变量,只有成员常量,默认修饰符 public static final
2.常量可以直接用 接口名.常量名 来调用数据,且默认定义为静态
3.无构造方法,因为接口主要是对行为进行抽象,没有具体存在
4.接口中不存准非抽象方法,默认修饰符 public abstract
5.一个类如果没有父类,默认继承Object

类和类的关系:继承关系,只能单继承(一个子类只能继承一个父类)但是可以多层继承
类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口(接口间用逗号隔开)
接口和接口的关系:继承关系,可以单继承,也可以多继承

抽象类作为形参时可创建对象(因为在主函数中调用时也是多态形式),即
public abstract class Animal
{
public abstract void eat();
}
public class AnimalOperator
{
public void useAnimal(Animal a)//在主函数中调用时也是多态形式
{
a.eat();
}
public Animal getAnimal()
{
Animal a = new Cat();
return a;
}
}
public class Cat extends Animal
{
public void eat()
{
System.out.println("猫吃鱼");
}
}
public class AnimalDemo
{
public static void main(String[] args)
{
AnimalOperator ao = new AnimalOperator();
Animal a = new Cat();
ao.useAnimal(a);//输出猫吃鱼

Animal a2 = ao.getAnimal();//new Cat()
a2.eat();//输出猫吃鱼
}
}
抽象类作为形参和返回值时,因为抽象类不能实例化,所以需要再创建一个子类继承该抽象类,再用多态形式创建对象
接口作为形参和返回值时情况与抽象类相同,创建一个接口的实现类

标签:子类,多态,接口,day30,抽象类,父类,public
来源: https://www.cnblogs.com/yx111/p/15125871.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有