类和对象的关键字
static
静态成分
静态的成员变量-类变量
static修饰的成员属于类所有,是所有实例(对象)所共享的成员。
成员变量可以是任何变量(可以是另一个类)
引用
- (推荐):类名称.变量名
-
- (不推荐): 对象名称...
作用:
通常用来提供共享的数据或工具方法 如:Math.PI
静态的成员方法-类方法
引用
- (推荐):类名称.方法名
-
- (不推荐): 对象名称...
静态变量和静态方法 在加载字节码的时候就进行处理,分配早
(实例变量和实例方法 在创建对象的时候处理)
具体过程:
-
静态方法能调用静态变量和其他静态方法。
-
静态方法不能直接使用非静态变量和方法。只能创建对象后,通过对象调用。
-
实例方法可以调用所有方法和变量
静态代码块
static{ System.out.println("Static block...."); }
在加载类的字节码时候,输出一次
package与import
什么是package?
逻辑上: 包是类的集合,一个包中含多个类(同包内,类不重名)
物理存储上: 包是类的组织方式,一个包对应一个文件夹。
包名体现类与接口的目录结构,用“”进行分隔。
包与类的关系: 类似文件夹与文件的关系
优点:
- 方便代码重用
- 可以将一组相关的类或接口封装在包(package)里,从而更好地管理已经开发的Java代码
取名:使用域名的模式
例如:cn.sdut.cs
物理路径(文件夹)上表现为:文件夹cn->文件夹sdut->文件夹cs
import(不同包的调用)
不同包的类,需要用import
导入类
注意:
对于default package:不能被其他包调用;所以尽量不要放在default package
如果要引用一个包的多个类:import xxx.*
对于java.long包可以不用import
包名严格区分
举例:cn.sdut包与cn.sdut.cs包是完全不同的包
2个包不具备包含关系(与文件夹的含义不同)
cn.sdut.A类使用cn.sdut.cs.B类时,要导入包
cn.sdut.cs.B类使用cn.sdut.A类时,也要导入包
第3个包要访问cn.sdut.cs.B类时,
import cn.sdut.cs.; 或者import cn.sdut.cs.B;均可
import cn.sdut.; 是错误的
访问修饰符
分类:4个
访问修饰符:private(私有) 默认 protected(受保护的) public(公开)
注意:只能不能访问变量;变量一样生成,一样占用空间
private
private可以修饰构造方法:(枚举类)
可以修饰普通变量:可以被继承,占用内存,但是不能访问
实践protected
package cn.sdut.cs2; import cn.sdut.cs1.A; //D类是A类的非同包子类 public class D extends A { public void d_m1() { System.out.println(c); //(c是A中的具有protected权限的数据) //可以正常输出 System.out.println(d); } public static void main(String[] args) { D obj = new D(); System.out.println(obj.c); //(c是A中的具有protected权限的数据) //可以正常输出 A obj2 = new A(); System.out.println(obj2.c); //(c是A中的具有protected权限的数据) //""""不""""可以正常输出 } }
目的:
- 信息隐藏(是OOP的最重要的功能之一,也是使用访问修饰符的原因。)
- 控制非法输入
实现方法:创建输出输出函数
代码:
public class Point2 { private int x; //创建隐性变量:其他类不可直接访问该变量 //直接访问显示错误 private int y; private int age; public int getX() { return x; } //需要创建函数输出 public int getAge() { return age; } public void setX(int x) { this.x = x; } //需要创建函数输出 public void setAge(int age) { this.age = age; }
abstract(抽象的)
修饰:类和方法
抽象方法:
提供方法的声明,但不提供方法体
例:
public abstract int area();
含有抽象方法的类一定是抽象类
抽象类:
不能用来生成对象,只能被继承(普通类必须继承全部的方法)
子类继承后实现未完成的抽象方法,否则为抽象类。
快速构建抽象类
对象的组合
举例:
public class Cuboid { SS rect; int c; public int totaArea() { return 2*rect.length()*c+2*rect.area(); } public int volumn() { return rect.area()*c; } public static void main(String[] args) { SS rect=new SS(1,2); Cuboid c=new Cuboid(); c.rect=rect; c.c=3; System.out.println(c.totaArea()); System.out.println(c.volumn()); } }
final(最终的)
修饰对象:
变量,方法,类
作用:
修饰变量:只能被赋值一次(赋初值也算一次)
修饰方法:无法被子类重写
修饰类:表示要终止被扩展,类不能被继承(称为:最终类)
this
作用:
-
形参名称/局部变量名称和成员变量相同时候:
用this(意为:当前对象)指定成员变量
如果不重名,系统自动填写this -
用于构造方法的调用
该语句必须是该构造方法的第一条
举例:
public class Sqyare { public Sqyare(int a) { this(a,a);//调用了第二个构造方法 a=1; } public Sqyare(int a,int b) { a=10; b=11; }
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15401946.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步