但是 port [] 3.1 语句 ring 都是 -c ffffff
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:
- class 父类 {
- }
- class 子类 extends 父类 {
- }
继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,
则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。
在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
- public class Animal {
- private String name;
- private int id;
- public Animal(String myName, String myid) {
- //初始化属性值
- }
- public void eat() { //吃东西方法的具体实现 }
- public void sleep() { //睡觉方法的具体实现 }
- }
- public class Penguin extends Animal {}
implements关键字
使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
- implements关键字public interface A {
- public void eat();
- public void sleep();
- }
- public interface B {
- public void show();
- }
- public class C implements A,
- B {}
又称为 构造方法,constructor 构造器用于构造该类的实例。
构造器是一个创建对象时被自动调用的特殊方法,为的是初始化。构造器的名称应与类的名称一致。
当创建一个个对象时,系统会该对象的属性默认初始化,基本类型属性的值为0(数值类型),false(布尔类型),把所有的引用类型设置为null.
构造器可以改变这种默认的初始化。
修饰符: 修饰符可以省略,也可以是public,protected,private其中之一
构造器名:构造器名必须和类名相同
形参列表:和定义方法形参列表的格式完全相同
指的指出的是,构造器不能定义返回值类型声明,也不能声明void定义构造器没有返回值,
如果为构造器定义了返回值类型,或者使用了void定义构造器没有返回值,编译时不会出错
但java会把这个所谓的构造器当做方法来处理
实例演示:计算坐标点的距离
实体类Point代码:
- public class Point {
- // 点的属性 横纵坐标
- int x;
- int y;
- // 默认无参构造器
- public Point() {
- System.out.println("默认构造。");
- }
- // 有参构造1
- public Point(int a, int b) {
- System.out.println("有参构造。");
- // 给对象赋值
- x = a;
- y = b;
- }
- // 有参构造2(重载)
- public Point(int a) {
- // System.out.println();
- this(a, a); // 重载 调用上面的有参构造1(此语法专门用来构造方法间调用,必须写在构造方法的第一行)
- }
- /**
- * 点距离的计算方法
- * 参数分别为:无参 点坐标 点对象
- * 方法重载
- */
- public double distance() { // 无参
- return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2)); // 到原点的距离
- }
- // 到某个点的距离
- public double distance(int a, int b) { // 参数为点坐标
- return Math.sqrt(Math.pow(this.x - a, 2) + Math.pow(this.y - b, 2));
- }
- public double distance(Point p) { // 参数为点对象
- return distance(p.x, p.y);
- }
- }
PrintDemo
- public class PointDemo {
- public static void main(String[] args) {
- Point p1 = new Point(3, 2);
- System.out.println("p1的坐标是:" + "(" + p1.x + "," + p1.y + ")");
- Point p2 = new Point(5);
- System.out.println("p2的坐标是:" + "(" + p2.x + "," + p2.y + ")");
- /**
- * 求点到点的距离
- */
- Point p = new Point(6, 8);
- System.out.println("到原点的距离为:" + p.distance()); // 到原点的距离
- System.out.println("到另一个点的距离为:" + p.distance(3, 3)); // 到(3,3)的距离
- System.out.println("到某个点对象的距离为:" + p.distance(p2)); // 到点对象p2的距离
- }
- }
输出为:
有参构造。
p1的坐标是:(3,2)
有参构造。
p2的坐标是:(5,5)
有参构造。
到原点的距离为:10.0
到另一个点的距离为:5.830951894845301
到某个点对象的距离为:3.1622776601683795
this 关键字表示当前对象。可用于:
2、super 关键字
super 表示使用它的类的父类。super 可用于:
调用父类的构造方法语法:
- super();
- 或
- super(参数列表);
注意:super 语句必须是子类构造方法的第一条语句。不能在子类中使用父类构造方法名来调用父类构造方法。 父类的构造方法不被子类继承。
调用父类的构造方法的唯一途径是使用 super 关键字,如果子类中没显式调用,则编译器自动将 super(); 作为子类构造方法的第一条语句。
这会形成一个构造方法链。
静态方法中不能使用 super 关键字。
调用父类的方法语法:
super.方法名(参数列表);
如果是继承的方法,是没有必要使用 super 来调用,直接即可调用。但如果子类覆盖或重写了父类的方法,则只有使用 super 才能在子类中调用父类中的被重写的方法。
java基础知识--继承
来源: http://www.bubuko.com/infodetail-2323217.html