[黑马程序员](第6-9天)面向对象(下)

来源:互联网 发布:小米怎么卸载软件 编辑:程序博客网 时间:2024/05/17 04:25
------- android培训、java培训、期待与您交流! ---------- 继承:
子类继承父类就默认继承了父类的全部成员变量
JAVA语言具有继承的单一性


super:
子类的构造方法中一定会调用父类的某个构造方法。这时可以用子类的构造方法中通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类对象时,会自动调用父类无参的构造方法

class Animal {
        //无参的构造方法
        Animal(){
                System.out.println("我是一只单身狗");
        };
        //有参的构造方法
        Animal(String name){
                System.out.println("我是一只"+name);
        }:
}

class Dog extends Animal{
        Dog(){};
}

class test {

        public void static void main(String[] args){
                Dog dog = new Dog();
        }
}


在控制台会得到的是:
我是一只单身狗

final关键字:
(1)final修饰的类不能被继承
(2)final修饰的方法不能被子类重写
(3)final修饰的变量是常量

abstract关键字:
不包含方法体的方法叫抽象方法,含抽象方法的类都是抽象类,但抽象类可以不包含任何抽象方法
特点:
抽象类不能实例化,如果想调用抽象类中的方法,需在子类中将抽象类中的抽象方法进行实现。
(即子类实现了抽象方法,即有了方法体之后就可以进行实例化了)

Example10.java

abstract class Animal {
        abstract void shout();
}

class Dog extends Animal {
        void shout(){
                System.out.println("wangwang..");
        }
}

class Test {
public void static main(String[] args){
        Dog dog = new Dog();
        dog.shout();
}



接口:
如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来定义,即接口
接口中定义的方法默认使用:public abstract来修饰,即抽象方法

Example11.java
interface Animal {
void breathe();
void run();
}

class Dog implements Animal{
void breath(){
        System.out.println("呼吸");
}
void run(){
        System.out.println("奔跑");
}
}

class test {
        public void static main(String[] args){
                Dog dog = new Dog();
                dog.breath();
                dog.run();
        }
}

还可以定义一个接口使用extents关键字去继承另一个接口


多态:
定义:在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态


一个多态的典型例子:
interface Animal{
        void shout();
}

class Dog {
        void shout(){
                System.out.println("汪汪");
        }
}

class Cat {
        void shout(){
                System.out.println("喵喵");
        }
}

class Test{
        public void static main(string[] args){
                Animal an1 = new Dog();
                Animal an2 = new Cat();

                animalShout(an1);
                animalShout(an2);

        }
        
        public void animalShout(Animal an){
                an.shout();
        }
}

匿名内部类是实现接口的一种简便写法
实现上面的效果,用匿名内部类有两种写法:















异常:
Throwable:Error+Exception
Error:错误类,无法通过修改代码来解决问题
Exception:异常类,程序本身可以处理的错误,它有一个特殊的子类RuntimeException类,该类及其子类表示运行时异常,除此类外,其他所有子类都用于表示编译异常


throwable这个大类有三个统一的方法:
String getMessage()
void printStackTrace() 将此throwable及其追踪输出至标准错物流
void printStackTrace(PrintStream s ) ....指定的输出流


try catch 和 finally

throw关键字


其相互关系是:
throws丢出(记录)问题,然后被try。。catch捕获处理


包:
编译的时候可以指定储存位置
javac -d D:\BaiduYunGuanjia helloWorld.java

import 包名.*  导入该包下所有的类

压缩java文件变为jar包

命令行:
jar -cvf helloworld.jar cn 

解压缩:
jar -xvf helloworld.jar


访问控制:
private:类访问级别
default:包访问级别
protected:子类访问级别(包类以及其他包里的子类可以访问)
public:公关访问级别

面向对象(下)over
0 0