Java面向对象编程3

一、◆抽象和封装


1、现实世界是“面向对象”的,面向对象就是采用“现实模拟”的方法设计和开发程序。

从现实中抽象出类:①发现类 ②发现类的属性 ③发现类的方法


用面向对象的思想描述面向对象的世界,符合人类的思维习惯。
(类图用于分析和设计类,更直观、容易理解。)


2、面向对象设计的过程就是抽象的过程。 


类是一类事物抽象的、概念上的定义。对象是实际存在的该事物的个体,是具体的、现实的。


3、方法重载:同一个类中包含两个或两个以上的方法,它们方法名相同,方法参数顺序、个数或类型不同,则称该方法被重载了。(与返回值、访问修饰符无关。)


4、构造方法:创建类的对象。主要作用在于创建对象时执行一些初始化操作(附初始值)。可以通过构造重载来实现多种初始化行为。

系统会提供一个空的构造方法, 但是如果有有参构造,那么系统则不会自动生成无参构造。

构造方法没有返回值类型,如果有,则不是构造方法,而是和构造方法同名的成员方法

★语法: 访问修饰符  构造方法名(){
//初始化代码

(没有返回值类型、名称和类名相同。 ☆作用:创建对象。用对象名.属性名调用属性。用对象名.方法名调用方法。)


5、封装:将类的成员属性声明为私有的,同时提供公有的方法实现对成员属性的存取操作。(getter/setter)
(封装是面向对象的三大特性之一。好处:隐藏类的细节;只能通过程序规定的方法来访问数据;方便加入存取控制语句,限制不合理操作。)


6、this关键字是对一个变量的默认引用,用以区别同名成员变量。
  ①this调用成员变量:成员变量和局部变量相同,必须用this;否则可以省略。
  ②this调用成员方法:this可以省略,直接调用print()。[例:this.print();]
  ③this调用重载构造:只能在构造方法使用,必须是构造方法第一条语句。 

因为this在对象内部指代自身的引用,所以this只能调用实例变量、实例方法、构造方法

this不能调用类变量和类方法、局部变量


访问权限(由小到大):private(私有的,类中)→friendly(默认,同一个包中)→protected(受保护的,同包,项目中不同包的子类)→public(共有的,项目所有)

static修饰符:

可以修饰属性、方法、代码块

(可以方便调用,用类名,对象名都可以调用)

static修饰的变量属于这个类所有,通常把static修饰的属性和方法称为类属性和类方法,不使用Static修饰的属性和方法属于单个对象,通常称为实例属性和实例方法

public class StaticTest {
    static int i;
    static int m=30;  //类属性
    int j;
    int k =25; //实例属性
    
    static{       //静态代码块,创建对象之前就执行
        i=10;
        System.out.println("i的初始化值为:"+i);
    }
    
    public StaticTest(){      //声明对象以后就执行了
        j=20;
        System.out.println("j的初始化值为:"+i);
    }
    
    public static void getNum(){
        System.out.println("得到i的值为:"+i);
    }
    
    public static void main(String[] args) {
        StaticTest st = new StaticTest();
        System.out.println("i的值为:"+StaticTest.i);  //类属性/类方法可通过*类名*和对象名访问
        st.getNum();          //通过对象名访问静态方法
        StaticTest.getNum();  //通过类名也能访问静态方法
        System.out.println("m的值为:"+st.m); //这次是通过对象访问类属性也可用类名访问
        System.out.println("k的值为:"+st.k); //实例属性只能通过对象名访问
        
    }
}

输出结果:

i的初始化值为:10
j的初始化值为:10
i的值为:10
得到i的值为:10
得到i的值为:10
m的值为:30
k的值为:25

static先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了
更为重要的是this和super都无法出现在static 修饰的方法中,static 修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象.如果使用的是类来调用而不是对象,则 this就无法指向合适的对象.所以static 修饰的方法中不能使用this.

静态方法中不能用this和super关键字

方法中不能定义Static变量,也就是说,类变量不能是局部变量

猜你喜欢

转载自blog.csdn.net/weixin_41985061/article/details/81072939