对面向对象的理解

什么是对象?

我们常说万物皆对象,对象是类的实例,是一组属性的集合。

什么是面向对象?

面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

面向对象的三大特性

1.封装性:

简单的理解就是藏起来,用对象把属性装起来就是一种封装。如:
public class Pojo {
    private String userName;
    private String passwd;

    public Pojo() {
    }

    public Pojo(String userName, String passwd) {
        this.userName = userName;
        this.passwd = passwd;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }
  }

 2.继承性

1.在java里面只能单继承,继承的关键字是extends,子类能继承父类的非private的属性和方法(构造器除外,父类的构造

器,子类只能使用super关键字调用),子类能在继承父类的基础上,加入自己的属性和方法。

2.子类能重写父类的方法,这也就是编译时多态。能自动向上转型,如:Person student=new Student(),学生类是子类,

能直接向上转型,如果是向下转型,则要强转,如:Student person=(Student)new Person()。

3.我们可以用A instanceof B判断A是不是B的子类。在使用向上转型的时候,编译看左边,运行看右边

也就是说Person student=new Student()中,student对象只能调用父类中继承过来的方法,子类独有的方法不能调用。

4在继承关系中,会先初始化父类,再初始化子类;如果子类对象只调用了父类的静态变量,则只会引起父类的初始化,子类不会初始化。

5.子类也能继承父类的静态方法,但是要用类名去调用。父类和子类的初始化顺序为:先父类的静态变量和静

态代码块->子类的静态变量和静态代码块->父类中普通成员变量和代码块->父类的构造函数->子类中普通成员变量和代码

块->子类的构造函数。

3.多态性

1.多态主要就是两个,一个是编译时多态(重写),另一个是运行时多态(重载)。通俗的理解多态:人有:医生,教师,学生......。叫声有:狗叫,猫叫,猪叫......。

2.重写和重载的区别

重载是在一个类中的,比如:
public class Test(){
    int add(int a,int b) {
    
    }
    int add(int a,int b,int c){
    
    }
}

重写是子父类中的,比如:
//父类
public class Person {
    public  void say(){
        System.out.println("hello world");
    }
    public void doSome(){
        System.out.println("吃完饭");
    }
}
//子类
public class Student extends Person{
    public void play(){
        System.out.println("打篮球");
    }
    //重写父类方法
    @Override
    public void doSome() {
        System.out.println("写作业");
    }
}

两个函数是不是重载关系不是通过返回值决定的,也跟权限修饰符无关,只是跟参数列表有关,参数列表有:参数个数不

同,参数的顺序不同,参数的类型不同。

对于重写来说,子类重写了父类的方法,那么重写的这个方法的权限修饰符要比父类大,返回值类型也要相同,方法和参

数也要一模一样,但是方法体中的内容不必相同

上一篇:SQL注入——万能密码,使用sqlmap的注入方法和GET类似,无非多了一个--data


下一篇:【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块