ACCP8.0 java课程第二学期-关于继承

本章重点:    继承的概念,重写与抽象类本章难点:    1.理解存在继承关系时创建对象时的内存调用原理    2.理解抽象类

学习方法:    1.自己多想例子并分析,有了思路立刻动手实现,不要空想社会主义    2.根据需求找父类,定子类,发现属性,归纳特征

1.继承1.1 继承是面向对象的特征之一,子类继承父类则子类能拥有父类的方法与属性,这样的好处是复用代码,使结果清晰,它是多态的必要条件1.2 需要继承的类访问修饰符不能用protected 和 private修饰1.3 Object是所有java的类的父类,如果一个类没有显式的继承一个类那么它默认就继承Object类1.4 (1)完全继承:public 和 protected 修饰的属性和方法 (2)部分继承:同一个包内默认修饰符修饰的属性和方法    (3)不能继承: private修饰的属性和方法与构造函数1.5 创建子类对象之前,都会从最上级依次调用父类的构造函数。1.6 如果父类没有提供默认的构造方法,则必须用super关键字显式的调用父类的构造函数写至第一行
package org.lyrk.accp8.s2.chapter.two;

/**
 * Created by niechen on 17/4/20.
 */
public class Test1 {

    public Test1() {
        System.out.println("Test1的构造函数");
    }

    public static void main(String[] args) {
        new TestChildTwo();

    }
}
class TestChildOne extends Test1 {

    public TestChildOne() {
        System.out.println("TestChildOne的构造函数");
    }
}

class TestChildTwo extends TestChildOne {
    public TestChildTwo() {
        System.out.println("这个是TestChildTwo的构造函数");
    }
}
//子类的访问修饰符不能是private 或者 protected
//protected class TestChildThree extends TestChildTwo{
//
//}
输出结果:
Test1的构造函数
TestChildOne的构造函数
这个是TestChildTwo的构造函数

2.super关键字是对父类的引用2.1 是调用父类的关键字2.2 调用父类的属性和方法2.3 调用父类的构造方法2.4 在构造函数中不能同时出现 super与this关键字,在实例方法则可以

3.关于重写3.1 可以用override注解,也可以不用3.2 规则:  (1)方法名,返回值(或者是其子类),方法参数必须保持一致。  (2)访问修饰符的控制权限不能低于父类的访问控制权限  (3)不能抛出不兼容于父类的异常3.3 重载(overload)与重写(override)的区别 (1) 重载是在一个类里,重写作用在子类当中 (2) 重载仅仅是需要方法名保持相同,而重写是返回值 方法名 参数保持一致,访问修饰符最好保持一致 (3) 构造方法支持重载,但构造方法无法被重写
package org.lyrk.accp8.s2.chapter.two;

import java.io.IOException;

/**
 * Created by niechen on 17/4/21.
 */
public class Test3 {

   public int age = 20;
    public void test1() {

    }

    public void test2() {

    }

    public void test3() {

    }

    public Test3 test4() {

        return null;
    }

    public void test5() throws NullPointerException {

    }

}

class Test3Child extends Test3 {
    //报错父类没有抛出异常
    public void test1()  throws Exception{

    }

   //报错 返回值与父类不同
    public int test2() {
        return 0;
    }

    public void test3(int text) {

    }

    @Override
    public Test3Child test4() {
        super.test4();
        return null;
    }

    //报错不兼容父类的异常
    @Override
    public void test5() throws IOException {

    }
}
4.抽象4.1 抽象类是一个残缺不全的类,所以它无法被实例化,用关键字abstract修饰4.2 抽象类中能定义实体方法也能定义抽象方法,但非抽象类不能定义抽象方法4.3 非抽象子类则必须要重写抽象方法4.4 抽象方法不能为private4.5 当一个类迫切的想让子类重写方法时则可以考虑定义抽象类(不知道该怎么实现,却很有必要实现)
 1 package org.lyrk.accp8.s2.chapter.two;
 2
 3 /**     * abstract示例 可以作用在类与方法上
 4  * Created by niechen on 17/4/21.
 5  */
 6 public abstract class Test4 {
 7
 8     public abstract void test1();
 9
10     protected abstract void test2();
11
12     abstract void test3();
13
14     // private abstract  void test4(); 抽象方法不能是私有的
15
16     public void test5() {
17         System.out.println("这个是实例方法");
18     }
19 }
20
21 class Test4Child extends Test4 {
22
23     @Override
24     public void test1() {
25
26     }
27
28     @Override
29     protected void test2() {
30
31     }
32
33     @Override
34     void test3() {
35
36     }
37 }

5 final关键字5.1 final类不能被继承,没有子类,final类中的方法默认是final的。    (1)final方法不能被子类的方法覆盖,但可以被继承。     (2)final成员变量表示常量,只能被赋值一次,赋值后值不再改变。     (3)final不能用于修饰构造方法。5.2 final作用于方法上:    如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。    使用final方法的原因有二:    第一、把方法锁定,防止任何继承类修改它的意义和实现。    第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率5.3 final作用于参数时,可以读取使用该参数,但是无法改变该参数的值。
package org.lyrk.accp8.s2.chapter.two;

/**
 * Created by niechen on 17/4/25.
 */
public final class Test5 {

    public static final String TEST_CONST = "这是一个常量测试";

    public final void test1() {
        System.out.println("这是一个final方法");

    }

    public static final String test2() {
        return null;
    }

    public void test3() {
        final int age = 10;

    }

    public void test4(final Test3 test3) {
       // test3 =new Test3(); 不可以创建对象 但能改变对象的属性
        test3.age =100;
    }
}
// 最终类不能被继承
//class Test5Child extends Test5 {
//
//}
时间: 2024-10-03 01:28:53

ACCP8.0 java课程第二学期-关于继承的相关文章

ACCP8.0 java课程第二学期-关于集合框架

本章重点 掌握ArrayList LinkedList HashMap与泛型集合 本章难点 泛型的理解 一 关于集合1)如果写程序时不知道运行时需要多少对象,或者需要更复杂的方式存储对象时,考虑使用集合它位于java.util包下2)集合框架包含接口,实现类,和相关算法3)Collection接口存储一组不唯一,无序的对象4)Set接口继承Collection接口,存储一组唯一无序的对象5)List接口继承Collection接口,存储一组不唯一有序的对象6)Map接口存储一组键值对的对象,ke

ACCP8.0 java课程第二学期-关于类和对象

本章重点:构造函数,封装,重载本章难点:static关键字 this关键字 1.面向过程与面向对象的区别面向过程是在Main函数中完成功能,从开始到结束,一步一步的实现功能面向对象是各个类之间协同工作,相互影响,需要考虑哪些类,有什么属性和方法 2.如何使用面向对象进行编程2.1 抽象出类(找名词)2.2 定义属性(找特征)2.3 定义方法(找行为或者动词) 1 / 2 * 3 * 现在有这样一个例子,小张到买了一个冰淇淋,他挺高兴的 4 * 1.首先我们找名词发现出小张(人),冰淇淋(物)这两

20162328蔡文琛 第二学期课程总结

学号20162328 2016-2017-2<程序设计与数据结构>课程总结 每周作业链接汇总 第一周作业 算法+程序机构=程序 渐进复杂度称为算法的阶. 算法分析是计算机科学的基础课题 第三周作业 查找是在一组项内找到指定目标或是确定目标不存在的过程. 搞高效的查找使得比较的次数最少. Comparable接口允许许多动态实现算法,而不是指应用于特定的类. 二分查找的每次比较都排除了一半的可行候选数据. 排序是按某种标准将一列数据项按确定的次序重排的过程. 教材学习内容总结 教材学习中的问题和

Java入门 第二季第三章 继承

这是我学习慕课网Java课程的笔记,原视频链接为:http://www.imooc.com/learn/124 3-1 Java 中的继承  ★ 概念:继承是类与类的一种关系,是一种 "is a" 的关系                                  图:继承关系--狗 和 动物 注:Java 中的继承是单继承,即一个类只有一个父类  ★ 好处 ● 子类拥有父类的所有属性和方法,但如果有private修饰,则子类不能使用该属性或方法 ● 实现代码复用  ★ 语法规则

Accp8.0 S2 02使用Java实现面向对象编程

对象和封装类和对象使用对象的目地:用计算机语言描述现实世界用计算机语言解决现实世界的问题使用面向对象的好处:交流更加流畅提高设计和开发效率怎样实现面向对象编程找出类找出属性(变量)找出行为(方法)类图:"+"为public 公开的"-"为private私有的this关键字,是对一个对象的默认引用,用以区分同名成员变量this关键字,代表当前对象(当前成员变量)构造方法和重载首先对象实例化构造方法无参构造语法访问修饰符 构造方法名(){}作用给成员属性默认赋初始值有参

java的第二个实验——JAVA面向对象程序设计

java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩:        指导教师:娄嘉鹏  实验日期:2015.4.14 实验密级: 预习程度:  实验时间:19:30~21:50 仪器组次:13 必修/选修:选修 实验序号:2 实验名称:JAVA面向对象程序设计 实验目的与要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态

黑马java课程2222

课程叫做27天学通java零基础 java 安装: 必须装jdk-7u72-windows-i586.exe 注意必须安装32位的就是i586这个.因为x64的不向下兼容.会有意向不到的bug 配置Path的方法 1.直接写Path里面 2.或者先建立一个系统变量叫做JAVA_HOME 然后在Path里面写%JAVA_HOME%\bin;即可. jdk1.5之后不用配置classpath了! 最好也不要配置这个classpath,因为不灵活.一旦你在别处放class就bug! path和clas

Java入门第二季学习总结

课程总概 该门课程作为java入门学习的第二季,是在有一定的java基础上进行的进一步学习.由于该季涉及到了java的一些核心内容,所以相对第一季来说,课程难度有所提升.大致可将该季的课程分为五部分:第一部分,类和对象(第一章):第二部分,封装(第二章):第三部分,继承(第三章):第四部分,封装(第四章4-1~4-6):第五部分,项目练习(第四章4-7.第五章.第六章).(课程来源:慕课网Java入门第二季) 一.类和对象 1.面向对象 即人关注事物信息. 2.类和对象 (1)类:即模子,确定对

老白的JAVA课程13 接口

之前我们讲到了java4大特征的最后一个抽象的特征,其实在抽象这个特征里面,我们还有一个特征-接口,今天我们就来学一学接口.  用电脑,手机等电子产品来比喻接口,可以更好的理解,比如用符合接口的插头就可以了.  接口具有很好的扩展性,方便.  接口的由来   例子:奥拓奥迪都是汽车,汽车的维护都是可以用调节引擎和更换汽油的方法,那么奥拓和奥迪也都可以:但是有了更多的维护对象以后,比如说大货车,卡车等等,其他的对象不一定需要每一步维护,或者都不需要维护:又比如不同枪支有不同特性的例子.  因此,我