Java基础知识总结(6)

在src创建包 通过包对类管理 包的命名规范 1英文小写字母2域名倒序

对象的属性不初始化会出有默认值 整形是0

字符串为null

double是0.0


Cat one = new Cat();

完成了两个部分操作,声明对象 Cat one

                                    实例化对象 new Cat()

声明对象:在栈空间开辟一片区域叫做one


这时候里面是空的,他还不是一个真正有效的对象 如果属性方法调用不允许

实例化就可以使用 


把栈和堆关联起来 就是= 赋值负号

就是把堆的内存地址存放到one当中

在java当中每用一次new都在堆开辟了新的实例空间,哪怕是完全相同的

不过可以这样:Cat one = new Cat();

Cat two = one;

修改属性就一起修改了


单一职责原则(单一功能原则):一个类有且只有一个引起功能变化的原因

如果一个类承载的功能越多,他的交融耦合性越高,被服用性越低


构造方法:不能被对象直接调用

构造方法的方法名与类名相同并且没有返回值

也可以添加或不添加参数

只能在实例化中调用


当没有指定构造方法,系统自动添加无参数构造方法

public Cat(){}

不能有返回值类型

有构造方法就不会自动添加

一个类可有多个构造方法

就近原则:他会找同一个范围内的变量成员


这样是可以的但是不好

this关键字

this.name=name就可以了

this表示当前对象


如果创建一个方法和类名一样 设置返回值,也可以调用 语法没问题

但是并不推荐大家去写 

另外构造方法不能再类内被别的方法调用

this();

来调用同一个类的无参数构造,不过必须方法体第一行


封装:将类当中的某些信息隐藏在类内部,不允许外部程序直接访问

通过该类提供的方法来实现对隐藏信息的操作和访问

隐藏对象信息

留出访问接口

特点:1只能通过规定的方法访问数据

2隐藏类的实例细节,方便修改和实现


Java实现封装:1    修改属性的可见性 设为private

                         2    创建getter/setter方法 设为public用于对象读写

                         3    在getter/setter方法中假如属性控制语句  对属性值的合法性进行判断

private String name;

public void setName(String name){

    this.name = name;

}

public String getName(String name){

    return this.name;

}


调用

Cat one = new Cat();

 one.setName("凡凡");

one.getName


把属性改为私有

快捷生成get和set

找一个区域右键,sourse

生成get和set

只有set只写,只有get只读

也可以构造传参,用set方法


使用包进行类管理Java文件解决同名文件冲突

我们创建新的包

命名采用域名倒叙+模块+功能

域名全部小写

package语句必须放在程序代码第一行

尽量一个包只存在和包相关的信息


导入包:

    package下面 package是定义包

import 加载的包名.*           ( .*表示所有类)

import 加载的包名.类名

建议通过第二种效率高


第三种直接在代码中加载

包名.类名

haha.cat one = new haha.cat();

不能导入两个包的同名文件

要么就把一个包里换成*,不过还是出现指名的那个  和导入的位置无关

我们只能明确的通过  包.类来调用

不过通过父包是不行的,只能加载直接的类



static关键字

静态成员,类成员,所有实例化公用同一个空间

类对象共享

类加载产生,销毁时释放,生命周期长

类名.属性访问


加载方法前面就是类方法

对象名.方法

或者  类名.方法

推荐   类名.方法


不能加载类前面


可以再方法中定义局部变量,但不能加上static

成员方法中也可以访问静态成员

静态方法不能访问非静态方法,只能调用静态方法

静态方法中不能使用this


不过可以实例化后调用


{}代码块    

方法里的{}普通代码块

顺序执行, 先出现先执行

在类当中定义就叫构造代码块

与位置无关

构造代码块在创建对象调用,优先于构造方法执行

可以有多个


如果在构造代码块前加上static

就变成静态代码块


静态代码块在类加载调用,优先于构造代码块执行


无论产生多少实例,静态代码块只执行一次

静态代码块只能给静态成员赋值


如果有些信息只希望他加载一次就在静态代码块

不同的{}产生不同作用空间

不同作用空间可以有同名变量 

在作用空间外无法访问到作用空间内的

代码块里的变量,生命周期只在代码块里


实现继承:extends


子类可以访问父类非私有成员

可以在产生类的界面继承


找包:alt+shift+o


方法重载:同一个类中,名相同,参数列表不同,返回值,访问修饰不不限制

方法重写:子类重写父类,返回值类型,方法名,参数类型,顺序,个数和父类完全一致,访问修饰符允许有变化(需要大于等于父类访问范围)参数名无关


子类也可以定于与父类重名的属性

protected:跨包非子类不可以,同包任意可以访问

默认:同包子类非子类可以,跨包子类/非子类不可以调用


 super关键字:

    super.eat();

就是调用父类的eat方法

对父类的调用


父类的构造方法不允许被继承 不允许重写


访问修饰符不影响成员加载熟顺序,更书写位置有关


子类构造默认调用父类无参构造


super(参数)

访问带参的构造方法

必须放在子类构造方法第一行



this()和super()只能出现一个



猜你喜欢

转载自blog.csdn.net/jhkj_5154/article/details/79936497