面向对象的基本知识点

标题面向对象之类与对象

1.关于面向对象:
面向对象有三大特征:(1)封装性(2)继承性(3)多态性
1.封装性:将外在的具体的事物转化为抽象的事物—类,在类里面的属性方法都生效,且可以有效维护其隐私性,控制其信息
是否对外开放,提取可信的信息,对不可信的信息进行隐藏, 总而言之,内部操作对外部操作不可见,若外部操作
想要访问其内部操作,必须实例化其类的对象,引入对象,再用对象调用类内部的属性等。
2.继承性:.一个类可以继承于另一个类,现有类可以基本实现原有类所有的方法和功能,并且可以在原有类的基础上进行拓展。
3.多态性:指类实例的相同方法有不同的表现形式,,多态机制使具有有不同内部结构的对象可以共享相同的外部接口.。
如定义一个Person类:

class Person{
            public String name;
            public int  age ;
            pubic void Person(String name,int age){
            this.name=name;
            this.age=age;
            }
            public String getPersonInfo(){
            return "姓名"+this.name+"年龄"+ths.age;
            }
}

4.类的实例化:外部的类可以通过对象调用实例变量及实例方法:
类名称 对象名=new 类名称();

Person per=new Person(张三,12);
System.out.println(p.name)//实例变量
System.out.println(p.getPersonInfo)//实例方法

5.对象的内存分析:
(1)对象的内存可以分为两部分,一部分是栈内存,一部分是堆内存,栈内存存储的是局部变量,及堆内存的地址,而堆内存保存的是
对象的属性,例:

Person per=new Person();
per.name="张三";
per.age=15;

其中per对象相当于栈内存,而name相当于 对象per new出的堆内存。
对象必须再实例化被调用,否则会出现运行错误:NULLpointerException。
(2)对象的引用传递,参考数组堆引用传递,一块堆内存可以被多个栈内存所指向。
垃圾空间:没有任何栈内存所指向的堆内存空间。
6.类的封装:
封装,即外部操作不能访问内部操作,使类具有隐蔽性。(可以用private进行封装)
若在外部想访问其内部的私有属性private,可以使用set;get访问器进行访问;

class Person{
    private String name;
    private int age;
    public void setName(String name) {
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
    public void getPersonInfo(){
        System.out.println("姓名"+name+"年龄"+age);
    }
}
public class bite{
    public static void main(String[] args){
        Person per=new Person();
        per.setName("张三");
        per.setAge(13);
        per.getPersonInfo();
    }
}

7.构造方法:
每一个类中必须有一个构造方法,如若没有,系统自动生成默认的构造方法;
构造方法的特点:(1)方法名称必须要与类名称相同(2)没有返回值(3)类中要有构造方法
8.方法的重载:函数名相同,参数不同,返回值不做要求,构造方法的重载是由无参到有参的重载。
9.匿名对象:new person(“张三”,13);匿名对象使用一次后会变成垃圾空间。
10.this关键字。this的作用(1.调用本类方法 2.表示当前对象 3.调用本类属性)
调用本类属性:

public Person(String name,int age){
    this.name=name;
    this.age=age;
}
public void getPersonInfo(){
   System.out.println("姓名"+name"年龄"+age)
} 
publc staic void main(String[] args){
   Peron per=new Person("张三",18);
   per.getPersonInfo();
}

你可能感兴趣的:(面向对象的基本知识点)