Java面向对象

this关键字

this是作为普通方法的“隐式参数”,由系统传入到方法中

this的用法:

普通方法中,this总是指向调用该方法的对象

构造方法中,this总是指向正要初始化的对象

this()调用重载的构造方法,避免相同的初始化代码;但只能在构造方法中用,并且必须位于构造方法的第一句

this不能用在static方法中

package YuXiDemo;
    //测试this的用法
public class ThisTest {
    int a,b,c;

    ThisTest(){
        System.out.println("初始化对象:" + this);
    }
    ThisTest(int a,int b){
        //ThisTest();这样是无法调用构造方法的
        this();//调用无参的构造方法,必须位于第一行
        a = a;//两个a都是指局部变量而不是成员变量
        //用this就可以区分成员变量和局部变量
        this.a = a;
        this.b = b;
    }
    ThisTest(int a,int b,int c){
        this(a,b);//调用有参的构造方法也必须位于第一行
        this.c = c;
    }
    void eat(){
        System.out.println("回家吃饭啦");
    }
    void play(){
        System.out.println("当前对象:" + this);
        this.eat();
        System.out.println("一起去打篮球吧");
    }

        public static void main(String[] args) {
            ThisTest tt = new ThisTest();
            tt.play();
        }
}

static关键字

static声明的属性或方法:静态变量(类变量)、静态方法(类方法)

静态变量/静态方法生命周期和类相同,在整个程序执行期间都有效

有以下特点:

为该类的公用变量,属于类,被该类的所有实例共享,再类载入时被初始化

static成员变量只有一份

一般用“类名.类变量/方法”来调用

在static方法中不可直接访问非static的成员

package YuXiDemo;

public class TestStatic {
    int id;//账号
    String name;//账户名
    static String school = "家里蹲大学";//名称,这是静态属性
    public TestStatic(int id,String name){
        this.id = id;
        this.name = name;
    }
    void come(){
        System.out.println(name);
    }
    public static void printSchool(){
        //come();调用非静态成员,编译就会报错;静态方法里面不能使用非静态成员
        System.out.println(school);
    }

    public static void main(String[] args) {
        TestStatic ts = new TestStatic(10086,"小神龙");
        TestStatic.printSchool();
        TestStatic.school = "五道口职业学院";
        TestStatic.printSchool();
    }
}

代码块

概念:使用”{}”括起来的一段代码

分类:根据位置可分类

普通代码块:直接在方法或语句中定义的代码块

构造代码块:直接写在类中的代码块

静态代码块:使用static声明的代码块

同步代码块:多线程的时候会学

静态初始化块

构造方法用于对象的普通属性初始;

静态初始化块,用于类的初始化操作,初始化静态属性;

类第一次被载入时先执行static代码块;类多次载入时,static代码块只执行一次

在类的初始化时执行,不是在创建对象时执行

在静态初始化块中不能直接访问非static成员

包(pakage)

相当于文件夹对于文件的作用,用于管理类、解决类的重名问题

两个要点:

1、通常是类的第一句非注释性的语句

2、包名:域名倒着写即可,在加上模块名,便于内部管理类

写项目时都要加包,不要使用默认包

com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包。

只是逻辑上看,后者是前者的一部分

import(导入类)

如果要使用其他包的类,需要使用import,从而在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名

注意:

Java会默认导入java.lang中包下所有的类,因此这些类我们可以直接使用

如果导入两个同名的类,只能用包名 + 类名来显示调用相关类:

java.util.Date date = new java.util.Date();

java.util.*;导入该包下所有的类,会降低编译速度,但不会降低运行速度

import  static(静态导入)

实在JDK1.5新增加的功能,其作用是用于导入指定类的静态属性和静态方法,这样我们可以直接使用静态属性和静态方法

package YuXiDemo;
import static java.lang.Math.*;//导入Math类的所有静态属性
import static java.lang.Math.PI;//导入Math类的PI属性
public class TestStatic {
    public static void main(String[] args) {
        System.out.println(PI);
        System.out.println(random());
    }

}

封装(encapsulation)

封装是面向对象三大特征之一;

封装的理念:高内聚,低耦合

编程中封装的优点:

提高代码的安全性;

提高代码的复用性;

“高内聚”:封装细节,便于修改内部代码,提高可维护性;

“低耦合”:简化外部调用,便于调用者使用,便于扩展和协作

面向对象的三大特征:

继承(inheritance)

-子类 父类

-子类可以从父类继承属性和方法

-子类可以提供自己单独的属性和方法

封装/隐藏 (encapsulation)

-对外隐藏某些属性和方法

-对外公开某些属性和方法

多态 (polymorphism)

-为了适应需求的多种变化,使代码变得更加通用

面向过程只有封装性(功能的封装,而没有数据的封装),没有继承和多态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值