一、继承通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类。
站在用户的角度思考问题,与客户深入沟通,找到宣威网站设计与宣威网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、申请域名、虚拟主机、企业邮箱。业务覆盖宣威地区。
已有的称为父类,新的类称为子类(父类派生子类,子类继承父类)。
(1)继承的优点: ①代码的可重用性; ②父类的属性的方法可用于子类; ③子类可扩展父类的属性和方法; ④设计应用程序变得更加简单。
(2)关键字“isa”用于判断父类和子类的继承关系是否正确。
(3)Java中继承的实现: public class 子类extends 父类{}(4)继承的单根性:在Java中一个类只能有一个父类;传递性:一个Java类可以父类,父类也可以有父类。
(5)所有类的根类: Object类,又叫基类或超类。
Object类是每个Java类的父类,要么是直接的父类,要么就是间接的父类。
Object类中的三个重要方法:①public boolean equals(Objectx):检测两个对象是否相等。
该方法经常被重写。
若两个对象通过该方法判断是相等的,那么两个对象的hashCode()方法应该产生相同的哈希码②public String toString:该方法返回对象的字符串表示。
用字符串来表示对象有助于调试或测试。
③protected void finalize() throws Throwale:该方法在对象将要被垃圾回收时调用。
(6)方法重写:子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。
该行为方法生在子类中,对父类方法重写。
子类重写父类方法时,湖北北大青鸟认为必须遵循如下规则:①子类的方法的返回值类型、方法名和形式参数列表必须和父类中的是相同的;②访问修饰符必须不小于父类中的访问修饰符;③子类中重写抛出的异常不能比父类中抛出的异常多。
什么是多态
面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。
多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
多态的作用:消除类型之间的耦合关系。
现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。
--------------------------
再简单一点:坐公车时,一个男的靠在你的肩膀,你可能不爽,但是如果一个美女靠在你的肩膀你就很乐意,这就是多态的表现
代码如下:
abstract class DongWu {
public abstract void info();
}
class Bird extends DongWu {
@Override
public void info() {
System.out.println("我是一只鸟。");
}
}
class Fish extends DongWu {
@Override
public void info() {
System.out.println("我是一条鱼。");
}
}
public class App5 {
public static void main(String[] args) {
DongWu bird = new Bird();
bird.info();
DongWu fish = new Fish();
fish.info();
}
}
//这就是一个封装类,封装的思想就是属性私有化,提供可以访问设置属性的共有方法
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void talk(){
System.out.println("一个人在说话");
}
}
//学生继承了人类,因为学生也是人(废话)
public class Student extends Person {
//班级
private String theClass;
//地址
private String address;
public String getTheClass() {
return theClass;
}
public void setTheClass(String theClass) {
this.theClass = theClass;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public void talk() {
System.out.println("一个学生在说话");
}
public static void main(String[] args){
//多态也就是父类引用指向子类对象
Person student = new Student();
student.talk();
}
}