------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承可以理解为一个对象从另一个对象获取属性的过程。
如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。
继承通俗的理解就是新创建一个类如果继承了一个类,那么被继承的就是父类,而自己就是子类了。而这个子类可以可以实现并且调用父类的方法。在java中,所以的类都由java.lang.Object类继承而来。所以Object是所有类的父类。
通常继承一个类可以通过Extends关键字来申明这个类是否继承自某一个类。主要Exteds只可以继承Public的属性和方法
/* * 创建一个类。 */ class Person { public int age ; public String name; } /* * 继承一个Person。 */ class zhulang extends Person { //可以看到这里我们可以调用父类的方法。 public zhulang() { this.name = "zhualng"; this.age = 12; } }
还有一种方法可以是想继承。那么就用implements关键字。这个关键字,
Implements关键字使用在类继承接口的情况下, 这种情况不能使用关键字extends。
说到接口我们得先学习一个概念就是抽象类
抽象定义:
抽象类: Java中可以定义没有方法体的方法,该方法的具体实现由子类完 成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
抽象方法的由来:
抽象类的特点
/* * 抽象类使用 */ abstract class absDemo { //声明抽象方法。 //格式:修饰符abstract 返回值类型 函数名(参数列表) ; public abstract String name(); }
说完抽象类。那么我们可以来学习一下接口。
为什么要有接口呢?Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
说到这里接口是一个抽象类。那么我么就会有问题,什么是抽象类呢?
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口与类相似点:
接口与类的区别:
接口有以下特性:
接口的声明和实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
public interface Imytefact { //任何类型 final, static 字段 final String name="xuexi"; static int Age =13; //抽象方法 public void Show(); } //实现上面的接口 public class instr implements Imytefact { //必须实现接口里买的所有方法。 public void Show() { //调用接口里面的静态字段。 System.out.println(this.name); } }
重写接口中声明的方法时,需要注意以下规则:
在实现接口的时候,也要注意一些规则:
函数覆盖(Override)
函数覆盖的展示
//对象的重载 public class Animal { public void move() { System.out.println("Animal可以移动"); } } //重写父类的方法 public class Mat extends Animal { //重写父类的方法 public void move() { //调用父类的move()方法。 super.move(); //自己的move()方法 System.out.println("Mat自己的移动方法"); } } public static void main(String[] args) { Mat mat = new Mat(); mat.move(); }
重载(Overload)
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
重载规则
具体的代码练习我就不展示了。
public class Overloading { public int test(){ System.out.println("test1"); return 1; } public void test(int a){ System.out.println("test2"); } //以下两个参数类型顺序不同 public String test(int a,String s){ System.out.println("test3"); return "returntest3"; } public String test(String s,int a){ System.out.println("test4"); return "returntest4"; } public static void main(String[] args){ Overloading o = new Overloading(); System.out.println(o.test()); o.test(1); System.out.println(o.test(1,"test3")); System.out.println(o.test("test4",1)); }
结语:面向对象就这样看完了。觉得毕老师的课程说得还是不错的。只能说我们想的学习和实践能力有限。没有足够的了解。现在只能了解个一二。希望以后能够好好理解面向对象的真正强大之处。