一.继承
1.继承的定义
通过对于一些具体事物的不断抽取其共性而形成的类叫做父类,继承则是将这些共性传递给我们所设计的子类的过程
2.为什么要用继承思想
1.一个公司有很多个部门和员工,但我们可以将这些员工的共性写成唯一的一个父类,比如说工作或者吃饭,那么我们在编写其他员工代码的时候可以用继承的思想,直接让各部门员工继承这个我们需要写n遍的特性。总而言之使代码更为简单易读,减少了重复代码
2.通过继承是代码之间联系更为紧密,当我们维护时也更容易通过断点等去找问题
3.关键字
public void A extends B(){}
4.什么是不能继承的
父类虽然是我们抽取共性所继承来的,但是其中的私有数据,方法我们都是不能调用的,但是数据我们也可以通过方法来间接调用
5.继承的特点
1.一个子类只能拥有一个父类
2.所有的类都有父类除了object类(祖宗类据说是....................)
6.对于私有元素的继承方法(代码如下)
package cn.itcast.demo2; /* * 这是父类 */ public class PrivateDemo { private int a; private String b; //这是我们所定义的私有类型数据。 public void seta(int a){ this.a=a; //此处的this是指该类中所定义的a。下方会有详解 } //对于私有类型数据我们要用set的方法存入数据 public int geta() { return a; } //再用get方法取出数据 public void setb(String b) { this.b=b; } public String getb() { return b; } } package cn.itcast.demo2; /* * 这是我们的子类 */ public class PrivateDemoSon extends PrivateDemo{ //先继承一下 } package cn.itcast.demo2; /* * 测试类 */ public class PrivateTest { public static void main(String[] args) { PrivateDemoSon pds=new PrivateDemoSon(); //实例化对象 pds.sea(6); pds.setb("大马猴"); System.out.println(pds.geta()+" "+pds.getb()); } }
二.this与super
1.区别
this用于指在该类中,而super则指的是父类中
2.用处
this主要用于区分该类中变量与我们引用调用该类方法时所定义的变量
public void seta(int a){ this.a=a; }
此处我们若是使用该方法时int a使我们清楚的知道此处是为了给a一个值,这种写法是程序可读性高,下方this也是为了区分类中a与我们所使用该方法时a。
区分的原因 计算机在读方法会就近读取,所以需要区分......
super当我们重写方法时至少可以减少我们的程序量直接在子类中super (原方法名)就可以代替不需要改动的部分
重写方法时,子类的方法修饰符不能权限低于父类的(毕竟是父类.........)
三.抽象类
1.抽象类的概念
无法实例化的对象就叫做抽象类
解释一下无法实例化:我们的父类都是抽取共性来的,这种具有共同属性的类就无法实例化
手表
智能手表 普通手表
小米牌 iwatch 华为的 ..... 瑞士手表 儿童玩具手表........
前两行就叫无法实例化的,因为它有共性。
2.抽象类的特征
1.没有方法体 public abstract void function() ......没有花括号
2.关键字 abstract
3.抽象类的方法不一定非是抽象方法,但抽象方法只能存在于抽象类中
4.无法实例化 (不能new,因为在我们new的过程中堆中才会出现开辟出这个类的地址)
5.抽象类必须是父类
3.属性
抽象类的子类必须要重写方法,这是强制性的,并且如果抽象类中有两个抽象方法我们只重写了一个的话该类还是一个抽象类,我们是无法实例化对象的。
4.好处
1.给了一个继承的体系
在我看来抽象类更像是一个限制,我们要想要继承抽象类就只能重写其中的抽象方法,而这些方法则决定了子类的基本功能,打个比方 还是手表作为一个抽象类,我们只需要把他的抽象方法计时方法放在那里,子类比如说智能手表他就必须要具备计时的方法。
5.代码....
package cn.itcast.demo3; /* * 这是一个手表抽象类 * 他是父类 */ public abstract class Clock { public abstract void time(); //计时的功能 public abstract void look(); //能让人看.... } package cn.itcast.demo3; /* * 这是一个子类 */ public class ClockSon extends Clock{ public void time() { System.out.println("我可以计时,算是个手表了"); //重写方法 } public void look() { System.out.println("我可以被读取"); //重写方法 } } package cn.itcast.demo3; /* * 测试类 */ public class ClockTest { public static void main(String[] args) { ClockSon cs=new ClockSon(); cs.look(); cs.time(); } }
四.总结
感觉还是质量不高,太基础了.......