JAVA SE (8)

–> JAVA SE (7)

从这篇起,进入java面向对象。

继承

继承的意义(为什么要有继承这个概念):避免重用代码

继承:从已有的类中派生出其他类。子类继承父类的特征和行为,使得子类对象具有父类的实例域方法
继承符合的关系:is a,表现在是父类更通用,子类更具体。
注意:java不支持多继承,但支持多重继承

继承的特性:

  • 子类拥有父亲的非private的属性和方法(子类不能直接继承父类的private属性和方法,但是父类private的成员在子类中仍然是存在的,只是子类不能直接访问)
  • 子类可以用自己的方式实现父类的方法(灾难的根源;子类中若定义一个父类已经存在的成员变量,这两个变量毫无关系)

继承关键字
extends和implements实现继承,所有的类均是继承于ava.lang.Object。若一个类没有继承的这两个关键字,则默认继承Object(Object类在java.lang包内,不需要import)。

  • extends只能跟一个父类
  • implements可以跟多个接口

super和this

  • super:实现对父类成员的访问。子类调用父类的方法(子类覆盖了父类的方法时),即需要使用super。
  • this:指向自己的引用

final
被final修饰的类为最终类,不能被继承;用于方法,表此方法不能被重写,修饰实例变量,不能被修改。
无论是引用变量还是基本数据类型,final的作用都一样:变量理里面存放的值不能变。

  • 对于基本数据类型,存放的就是平常大家理解实实在在的值,如23,"TxL"等。
  • 对于引用类型,存放的就是一个引用,一个地址,指向某个数组或者对象。指向的对象不能变,如指向张三这个对象,但是他的属属性可以变,如
final Person p = new Person("TxL");
//此时不能对p重新进行赋值,如 p = new Person("ZZY");
//但你可以改变属性
p.setName("ZZY");

注意:被声明为final的类,其方法默认被final修饰,但是,实例变量没被final修饰。

构造器
子类不能继承父类的构造器,只是调用(唯一途径是使用super)。super语句,是子类构造方法的第一条语句,如不写,编译器会默认加上。
关于构造器:在构造一个子类对象时,父类的构造器在子类的构造器中被先调用。并且,在程序的运行过程中,子类对象的一部分空间存放的是父类对象–子类从父类继承,子类初始化过程中,可能会使用到父类的成员,所以父类的空间先被初始化。

  • 若父类的构造器带有参数,则必须在子类的构造器中显式的通过super调用父类的构造器并且配以适当的参数列表。
  • 若父类构造器没有参数,则在子类的构造器中不需要使用super调用父类构造器,系统自动调用无参构造器。

最后,在继承关系中,在调用方法或者类的成员变量时,java虚拟机会先检测当前的类(即子类)中是否含有该方法或者成员变量—若有,则执行子类的;否则的话执行父类的。
以下代码摘自菜鸟教程:

public class Start
{
    public static void main(String[] args)
    {
        Cat cat=new Cat("Jack","黑色");
        cat.eat();
        cat.run();
        cat.sleep();
    }

}

class Animal 
{
    String name;
    
    public Animal(){}//必须要写这个构造函数,不然Cat类的代码会出错
    
    public Animal(String name)
    {
        this.name=name;
    }
    
    void eat()
    {
        System.out.println(name+"正在吃");
    }
    
    void run()
    {
        System.out.println(name+"正在奔跑");
    }
    
    void sleep()
    {
        System.out.println(name+"正在睡觉");
    }
}

class Cat extends Animal
{
    String color;
    public Cat(String name,String color)
    {
        this.name=name;
        this.color=color;
    }
    void eat()
    {
        System.out.println(color+"的"+name+"正在吃鱼");
        }
}

结果

黑色的Jack正在吃鱼
Jack正在奔跑
Jack正在睡觉

这种现象叫重写(和后面的多态有这紧密的关系)。

JAVA SE (9)

Title: OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808 Author: Jeanne Boyarsky, Scott Selikoff Length: 432 pages Edition: 1 Language: English Publisher: Sybex Publication Date: 2014-12-31 ISBN-10: 1118957407 ISBN-13: 9781118957400 Full coverage of functional programming and all OCA Java Programmer exam objectives OCA, Oracle Certified Associate Java SE 8 Programmer I Study Guide, Exam 1Z1-808 is a comprehensive study guide for those taking the Oracle Certified Associate Java SE 8 Programmer I exam (1Z1-808). With complete coverage of 100% of the exam objectives, this book provides everything you need to know to confidently take the exam. The release of Java 8 brought the language's biggest changes to date, and for the first time, candidates are required to learn functional programming to pass the exam. This study guide has you covered, with thorough functional programming explanation and information on all key topic areas Java programmers need to know. You'll cover Java inside and out, and learn how to apply it efficiently and effectively to create solutions applicable to real-world scenarios. * Work confidently with operators, conditionals, and loops * Understand object-oriented design principles and patterns * Master functional programming fundamentals Table of Contents Chapter 1 Java Building Blocks Chapter 2 Operators and Statements Chapter 3 Core Java APIs Chapter 4 Methods and Encapsulation Chapter 5 Class Design Chapter 6 Exceptions Appendix A Answers to Review Questions Appendix B Study Tips
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值