JAVASE之面向对象编程--类和对象1

1.面向编程范式--面象对象三大特征

2.private实现的封装处理--getter setter

3.构造方法--this关键字

4.static关键字

 

1.面向对象编程范式(c++,java.Go)--能进行现实生活的抽象--狗吃粮

  每个对象--类

  属性以及方法

  OOA: 面向对象分析

  OOP:面向对象编程

  OOD:面向对象设计

  

  面向对象三大特征:*****

  a.封装性:将客观事物封装为抽象的类,每个类都有自己的属性与方法,并且类可以让自己的数据与方法只让可信的类或对象操作,对不可信的进行信息隐藏。内部操作对外部不可见(保护性)。

  b.继承性:可以使用现有类的所有功能,并且在无需重新编写原有类代码的情况下进行功能上的扩展。

  c.多态性(*****):一个类实例的相同方法在不同情形下有不同的表现形式

  多态机制使得具有不同内部结构的对象可以共享相同的外部接口。(利用多态可以得到良好的设计)

  

  Java中类和对象的定义与使用,类是一个共性的概念,而对象是一个具体的,可以使用的事物。

   类是生产对象的蓝图,先有类才可以产生对象。对象的所有属性和行为,一定在类中进行了完整定义。

 

   class 类名称{

       属性1;

       属性2;

       ..

       方法1(){}

       方法2(){}

       ...

   }

   类中的属性与方法(不带static关键字的)只能通过对象调用

对象产生语法

      类名称 对象名称 = new 类名称();

对象内存分析

   栈内存(虚拟机局部变量表):存放的是局部变量(各种基本数据类型,对象引用--对象名字)

   堆内存:保存对象。

     new表示在堆上新分配了空间。

   垃圾空间:没有任何栈内存指向的堆内存空间。

   

 

  面向过程编程范式(c)-吃狗粮

  面向切面编程(EE-AOP)

  面向接口编程--接口优先原则

  函数式编程  --Scala(JVM)

    () -> {}

2.private实现的封装处理

将属性与方法用private封装后表示,被封装的属性与方法只能在本类中使用,在类外部不可见。

  此时要想访问被封装的属性,必须提供getter与setter方法。

   setter方法:主要进行属性内容的设置与修改。

   getter方法:主要进行属性内容的取得。

class Person{
    private String name;
    private int age;

    public Person(String name, int age) {

        this.name = name;
        this.age = age;
    }

    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;
    }
}

类的设计原则:编写类的时候,没有额外说明,所有属性必须使用private封装(成员变量)

 

3.构造方法(类中属性初始化)

Person per2 = new Person();//person()--->构造方法

3.1java中构造方法的三大特征:

a.构造方法名称必须与类名相同

b.构造方法没有返回值类型声明

c.每个类中一定至少存在一个构造方法,如果没有明确定义,系统会自动生成无参构造。若在类中自定义了构造方法,系统就不会再

生成无参构造。

 

3.2构造方法重载:仅限于参数的个数不同。

3.3类定义顺序

1.定义属性-》2.定义构造方法-》3.定义普通方法

执行构造函数时会先把类中的所有属性和她们的初始值扔到构造函数中。

3.4 this关键字

  3.4.1表示调用本类属性

  3.4.2表示调用本类方法

  3.4.3表示当前对象

解释:

  3.4.1表示调用本类属性

   补充:就近使用原则。找离同名最近的名字

 

  public Person(String name,int age){
        name = name;
        age = age;
    }  //就近原则,错误

   正确:只要在类中访问类的属性,一定要加上this关键字

     

public Person(String name,int age){
        this.name = name;
        this.age = age;
    }

 

  3.4.2表示调用本类方法

  a.调用普通方法:this.方法名(参数)

    当有类的继承关系时,表示本类方法一定要加上this关键字。

   

 public void getPersonInfo(){
        System.out.println("姓名:"+name+"   年龄"+age);
        this.print();  //不写this也会自动生成
    }
    public void print(){
        System.out.println("************");
    }

  b(*****).调用构造方法 this(参数)

    Ⅰ。this调用构造方法必须放在构造方法首行。

   

  public Person(){
        System.out.println("*****");
    }
    
    public Person(String name){
     //   System.out.println("*****");
        this();//调用本类无参的构造方法
        this.name = name;
    }

    public Person(String name,int age){
        //System.out.println("*****");
        //this.name = name;
        this(name);//调用本类有一个参数的构造方法
        this.age = age;
    }

    Ⅱ。this调用构造方法不允许成环

    

  3.4.3表示当前对象

  

class demo{
      print(){
          System.out.println(this);//这里this是demo1
      }

  }
  public static void main(String[] args){
      demo de = new demo();
      demo1.print();
  }

4.static关键字:    

  4.1  static变量--类属性(静态属性)

  static属性称为类属性,保存在全局数据区(方法区--所有对象共享区域),通过类名调用,与对象实例化无关。

person.getcountry();

应用场景:

   描述共享属性(所有对象具有相同的值:中国人共享属性就是国家)使用static属性(1%)

4.2 static方法--类方法(静态方法)

   通过类名调用,与对象实例化无关。常见于工具类方法。

    public static void fun(){} //person类

    person.fun();//主类

 

注意:

  1.在java中,static不能修饰局部变量

  2.static和private均不能加在外部类之上,内部类可以。

你可能感兴趣的:(java)