面向对象高级

Package 的使用

java.lang(language) Java语言程序设计的基础类

java.awt(abstract window toolkit) 用于创建用户界面和绘制图形图像的相关类

java.util(utility) 包含集合、日期、国际化和各种使用的工具类

java.io(input/output) 可提供数据输入/输出相关功能的类

java.net(网络) 提供用于实现Java网络编程的相关功能的类

java.sql(structed query language) 提供数据库操作相关功能类

 

继承(Inheritance)

Eg:

import java.util.Date;

 

public class Person {

   

    private Stringname;

    private int age;

    private Stringbirthday;

   

    public StringgetName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }

 

    public StringgetBirthday() {

       return birthday;

    }

    public void setBirthday(String birthday) {

       this.birthday = birthday;

    }

    public StringgetInfo(){

       return "name:"+name+"\t"+"age:"+age+"\t"+"birthday:"+birthday;

    }

}

 

public class Student extends Person{

   

    private String school;

 

    public String getSchool() {

       return school;

    }

 

    public void setSchool(String school) {

       this.school = school;

    }

}

 

public class TestExtends {

    public static void main(String[] args) {

      

       Student s = new Student();

           s.setAge(21);

       s.setBirthday("1990,05,01");

       s.setSchool("top");

       System.out.println(s.getInfo());

 

    }

}

结果:

name:xiaoqing age:21 birthday:1990,05,01

访问控制:

 指对Java类或类成员中的操作进行限制。即规定其在多大的范围内可以被直接访问

 

 

方法重写

 Override

 在子类中可以根据需要对父类中继承的方法进行重新定义

  规则:

       重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;

       重写方法不能使用比重写方法更严格的访问权限;

       重写方法不允许声明抛出比被重写方法范围更大的异常类型。

Eg:

       public class Person {

   

    protected String name;

    private int age;

    private String birthday;

   

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }

 

    public String getBirthday() {

       return birthday;

    }

    public void setBirthday(String birthday) {

       this.birthday = birthday;

    }

    public String getInfo(){

       return "name:"+name+"\t"+"age:"+age+"\t"+"birthday:"+birthday;

    }

}

 

public class Student extends Person{

   

    private String school;

 

    public String getSchool() {

       return school;

    }

 

    public void setSchool(String school) {

       this.school = school;

    }

   

    public String getInfo(){//方法的重写

重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;

       重写方法不能使用比重写方法更严格的访问权限;

       重写方法不允许声明抛出比被重写方法范围更大的异常类型。

 

       return "school:"+school;

    }

}

 

public class TestOverride {

    public static void main(String[] args) {

       Student s = new Student();

       s.setName("xiaoqing");

       s.setAge(21);

       s.setBirthday("1990,05,01");

       s.setSchool("top");

       System.out.println(s.getInfo());

 

    }

 

}

 

结果:

school:top

 

关键字super

在存在命名冲突(子类中存在方法重写或添加同名属性)的情况下,子类中的代码将自动使用子类中的同名属性或重写后的方法。也可以在子类中使用关键字super引用父类中的成分

Eg:

调用父类中属性的值:

public class TestSuper1 {

 

    public static void main(String[] args) {

       Dog d = new Dog();

       d.getInfo();

       System.out.println(d.getInfo());

       d.test();

    }

 

}

    class Animail{

        protected int i = 2;

     }

   

    class Dog extends Animail{

       protected int i = 3;

       private String name = "xiao'bai";

       private int age = 10;

      

      

       public String getInfo(){

           return "Name:"+name+"\t"+"Age:"+age;

       }

      

       public void test(){

           System.out.println(super.i);//调用父类中属性的值

           System.out.println(i);//调用子类中属性的值

       }

    }

 

结果:

Name:xiao'bai Age:10

2

3

Eg:

调用父类中方法的值:

public class TestSuper2 {

 

    public static void main(String[] args) {

       Man m = new Man();

       m.getInfo();

       System.out.println(m.getInfo());

       m.test();

       Woman w = new Woman();

       w.getInfo();

       System.out.println(w.getInfo());

       w.test();

    }

 

}

    class People{

        protected int i = 2;

     }

   

    class Man extends People{

       protected int i = 3;

       private String name = "Tom";

       private int age = 20;

      

      

       public String getInfo(){

           return "Name:"+name+"\t"+"Age:"+age;

       }

      

       public void test(){

           System.out.println(super.i);//调用父类中属性的值

           System.out.println(i);//调用子类中属性的值

       }

    }

   

    class Woman extends Man{

       protected String sex = "女";

       protected int hight = 175;

      

       public StringgetInfo(){//重写了getInfo()方法

           return super.getInfo()+"\thight:"+hight+"\t"+"sex:"+sex;

       }

      

       public void test(){

           System.out.println(super.i);//调用父类中属性的值

           System.out.println(i);//调用子类中属性的值

       }

    }

 

结果:

Name:Tom   Age:20

2

3

Name:Tom   Age:20 hight:175  sex:女

3

3

 

方法重载

       在一个类中存在多个同名方法的情况称为方法重载(Overload),重载方法的参数列表必须不同

规则:

       方法名一样

       参数列表一定不一样

Eg:

public class Test {

    public static void main(String[] args) {

       Tool t = new Tool();

       t.display(21);

       t.display(5201314);

       t.display("我爱你,我的乖乖");

    }

 

}

    class Tool{

       public void display(int a){

           System.out.println("输出整数:"+a);

       }

      

       public void display(double b){

           System.out.println("输出浮点型:"+b);

       }

      

       public void display(String c){

           System.out.println("输出文本:"+c);

       }

    }

 

结果:

输出整数:21

输出整数:5201314

输出文本:我爱你,我的乖乖

 

构造方法重载

关键字static

静态导入

关键字final

Final标记的类不能被继承

标记的方法不能被子类重写

标记的变量(成员变量或局部变量)即成为常量,只能赋值依次

标记的成员变量必须在声明的同时或在每个构造方法中显示赋值,然后才能使用

不允许用于修饰构造方法、抽象类以及抽象方法

多态性

 多态:Java中,子类的对象可以替代父类的对象使用

对象造型(Casting)

       引用类型数据值之间的强制类型转换称为造型


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值