标签:情况下 ngui 改变 使用 面向 添加 inf 冗余 取数据
继承是Java中实现代码重要的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类。简单点来说就是继承是类和类之间的关系。
提升代码的复用性
减少代码的冗余
class 子类 extends 父类
extends关键字实现类的继承
(1)使用super关键字,super代表父类对象
(2)在子类构造方法中调用且必须是第一句
(3)不可以访问父类中定义为private的属性和方法
private String varieties;//品种 public Dog(String name, int health, int love,String varieties) { super(name, health, love);//显示调用父类构造 放在第一位 this.varieties=varieties; }
子类可以继承父类的任何非私有成员(变量 方法 构造)
子类永远比父类拥有更多的成员 子>父
除了方法体不同以外,其余所有(返回类型,返回值,参数)完全一致
有抽象方法的类一定是抽象类
抽象类不一定有抽象方法
抽象类不能被实例化 例如 Pen pen=new Pen();不能实例化
抽象类的子类可以是普通类,该普通类要实现抽象类中的抽象方法
抽象类的子类也可以是抽象类,此时,父类中的抽象方法可以在子类中不被实现
get:获取字段的值 函数返回值类型===>字段的类型
set:给字段设置值 函数的参数===>字段的类型
//获取数据 public String getName() { return name; } //添加数据 public void setName(String name) { this.name = name; }
一个类在没有编写构造函数的情况下默认存在一个无参构造 如果用户编写了 默认存在的就消失了
构造函数是没有返回值类型的
构造函数的执行时机:是在类的实例化的过程中,会自动调用构造函数
作用:完成类的成员变量的初始化
public Person() { }//这就是系统默认的构造函数即使不创建也会存在
同一个引用类型,使用不同的实例而执行不同操作
发生在具有继承关系的实体中,不同实体为了完成同一操作(函数名)所采取的不同方式(方法体)。
在出现超类的位置上,可以使用其子类对象 解释一下:
(由于,子类比父类更优秀,出现父类的任何位置,子类都可以使用)
向上转型:子类对象--->父类做的转换 无需强转(没有异常)
Pet pet=new Dog("小白", 50, 89, "阿拉斯加"); pet.showInFo();//向上转型自动转换
向下转型:父类类型--->子类类型转换 需要强转,使用instanceof比较两个类型避免发生(ClassCastException)异常
Pet pen=new Penguin("小红", 50, 90, "Q妹"); if(pen instanceof Penguin){//用 instanceof比较避免出现异常 Penguin peng=(Penguin)pen;//需要强制转换 peng.eat(); }else { System.out.println("您输入的不准确"); }
值类型:八种基本数据类型
引用数据类型:Object
将栈上的数据Copy一份
引用类型的值传递会改变
值类型的值传递不会改变
Java中只支持值传递
标签:情况下 ngui 改变 使用 面向 添加 inf 冗余 取数据
原文地址:https://www.cnblogs.com/tkzm/p/10950576.html