JavaSE学习笔记(一)面向对象之类与对象

1.类的定义

(1)Java编程语言是面向对象的,处理的最小的完整单元为对象。而现实生活中具有共同特性的对象的抽象就称之为类。类由类声明和类体构成,类体又由变量和方法构成。

(2)类声明的基本格式
访问说明符 class 类名 extends 超类名 implements 接口名
其中:
(1) 访问说明符为public或者缺省。public用来声明该类为公有类,可以被别的对象访问。声明为公有的类存储的文件名为类名。
(2) 类名:用户自定义的标识符,用来标志这个类的引用。
(3) 超类名:是指已经存在的类,可以是用户已经定义的,也可以是系统类。
(4) 接口名:即接口。

(3)类体的格式
类体包括成员变量和方法。
(1) 成员变量:指类的一些属性定义,标志类的静态特征,它的基本格式如下:
访问说明符 数据类型 变量名
其中:
访问说明符有public、private和protected三种:
public:省略时默认为公有类型,可以由外部对象进行访问。
private:私有类型,只允许在类内部的方法中使用,若从外部访问,必须通过构造函数间接进行。
Protected:受保护类型,子类访问受到限制。
数据类型包括基本类型以及用户自定义的扩展类型。
(2) 方法:是类的操作定义,标志类的动态特征,它的基本格式如下:
访问说明符 数据类型 方法名(数据类型1 变量名1, 数据类型2 变量名2)
其中:
访问说明符为public、private和protected,其使用方法与成员变量访问说明符的使用方法一致。
数据类型:包括基本数据类型和用户自定义的扩展类型。
●数据类型为参数。

下面我们以一个简单的例子来具体看一下:

/** * 类的学习 * @author daoyuan * */

class Dog extends animals implements Animal{
    private int price;     //价格
    public String people;  //主人名字
    public String like;    //爱好
    //....其他属性

    //构造方法
    public void Dog(){
    }

    //get/set方法
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getPeople() {
        return people;
    }
    public void setPeople(String people) {
        this.people = people;
    }
    public String getLike() {
        return like;
    }
    public void setLike(String like) {
        this.like = like;
    }

    //重写接口的方法
    @Override
    public void eat() {
        // TODO Auto-generated method stub

    }
    @Override
    public void play() {
        // TODO Auto-generated method stub

    }

    //自己的方法
    public void playDish(){
        System.out.println("I like play!");
    }
    //...其他的自定义方法

}

//父类
class animals{
    private int id;
    public String name;
    public String data;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getData() {
        return data;
    }
    public void setData(String data) {
        this.data = data;
    }

}

//接口
interface Animal{
    public void eat();
    public void play();
}
public class demo1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //利用new关键字实例化一个对象
        Dog wang = new Dog();
        wang.setId(01);
        wang.setData("2001/01/01");
        wang.setLike("eat");
        wang.setName("big huang");
        wang.setPrice(200);

        System.out.println("编号为"+wang.getId()+"的"+wang.getName()+"的出生日期是:"+wang.getData()+
                "售价是:"+wang.getPrice()+"爱好是:"+wang.getLike());
    }
}

这里写图片描述
通过这个简单的例子我们对于类的格式就有了一个基本的认识。

(4)类的单继承性
Java编程语言中允许用extends关键字从一个类扩展出一个新类,新类继承超类的成员变量和方法,并可以覆盖方法。

(5)重载和重写的区别

override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。
重写(覆盖)的规则
1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
3、重写的方法的返回值必须和被重写的方法的返回一致;
4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写为非静态的方法(会编译出错)。

overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
重载的规则
1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响

2.面向对象的思想

就拿我们制作一个盒子来说:
面向过程:不去想做什么样的盒子,随机取工具制造;
面向对象:先想好做一个什么样的盒子,再去拿相应的工具去做;

三大特征:
(1)封装性:对外部不可见
(2)继承性:扩展类的功能
(3)多态性:方法的重载;对象的多态性

你可能感兴趣的:(java)