总结:Java中的类和对象
1.类的定义:
类的成员包括:字段、方法、代码块、内部类和接口。
class Person {
private String name;
private int age;
}
2.成员方法:
调用–>通过对象的引用进行调用,必须实例化(new)对象,
class Person {
public int age = 18;
public String name = “张三”;
public void show() {
System.out.println(“我叫” + name + “, 今年” + age + “岁”);
}
}
class Test {
public static void main(String[] args) {
Person person = new Person();
person.show();
}
}
注:new 关键字用于创建一个对象的实例.
使用 . 来访问对象中的属性和方法.
同一个类可以创建对个实例.
3.成员变量:
只要定义在类的内部,并且他不在方法内部的变量。
(1)引用类型:如果没有初始化,则默认值为null。
(2)简单类型:简单类型对应的0值(char->\u0000; boolean->false)
(3)一个类可以实例化多个对象。
(4)访问类的成员变量:引用.成员变量
(5)访问类的成员方法:引用.成员方法
4.静态成员变量:
----不属于对象
(1)被static所修饰
(2)调用:类名.静态成员变量
(3) static:类名进行调用,被static所修饰的,都不依赖于对象。
(4)静态成员方法,为什么不可以调用实例成员变量?
原因:所有静态的方法或者成员变量,不依赖于对象;
实例成员变量的调用依赖于对象,必须产生一个对象的引用才能调用实例成员变量;但是实例方法内可以调用静态成员。
(5) 总结Static:
a) 修饰属性,Java静态属性和类相关, 和具体的实例无关. 换句话说, 同一个类的不同实例共用同一个静态属性.
b) 修饰方法:
如果在任何方法上应用static 关键字,此方法称为静态方法。
静态方法属于类,而不属于类的对象。
可以直接调用静态方法,而无需创建类的实例。
静态方法可以访问静态数据成员,并可以更改静态数据成员的值。
(6)注意事项
1): 静态方法和实例无关, 而是和类相关.
静态方法不能直接使用非静态数据成员或调用非静态方法(非静态数据成员和方法都是和实例相关的).
this和super两个关键字不能在静态上下文中使用(this 是当前实例的引用, super是当前实例父类实例的引用, 也是和当前实例相关).
5.整体代码:
class Person {
//实例变量 存放在对象内
public int age;
//实例变量
public String name;
public String sex;//实例变量
//类变量也叫静态变量,编译时已经产生,属于类本身,且只有一份。存放在方法区
public static int count;
//被final修饰的叫常量,也属于对象。 被final修饰,后续不可更改
public final int SIZE = 10;
//静态的常量,属于类本身,只有一份 被final修饰,后续不可更改
public static final int COUNT = 99;
//实例成员函数
public void eat() {
int a = 10;//局部变量
System.out.println(“eat()!”);
}
//实例成员函数
public void sleep() {
System.out.println(“sleep()!”);
}
//静态成员函数
public static void staticTest(){
//不能访问非静态成员
//sex = “man”; error
System.out.println(“StaticTest()”);
}
}
public class Main{
public static void main(String[] args) {
//产生对象 实例化对象
Person person = new Person();//person为对象的引用
System.out.println(person.age);//默认值为0
System.out.println(person.name);//默认值为null
//System.out.println(person.count);//会有警告!
//正确访问方式:
System.out.println(Person.count);
System.out.println(Person.COUNT);
Person.staticTest();
//总结:所有被static所修饰的方法或者属性,全部不依赖于对象。
person.eat();
person.sleep();
}
}
6.封装性
1.private:只能在类的内部进行访问;如果在类的外部进行访问,需要给属性设置set与get方法,进行访问set与get方法。
2.构造方法:方法名必须和类保持一致,没有返回值;它的作用是用来生成对象的。
3.构造方法可以构成重载关系。
4.创建一个对象,分为两步:
5.static与this的比较:
7.代码块
1.构造代码块(实例代码块):
//实例代码块
{
this.name = “aaa”;
this.age = 12;
this.sex = “man”;
System.out.println(“I am instance init()!”);
}
2.普通代码块:定义在方法中的代码块。
3.静态代码块:使用static定义的代码块。一般用于初始化静态成员属性。
//静态代码块
static {
count = 10;//只能访问静态数据成员
System.out.println(“I am static init()!”);
}
总结:静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。静态代码块执行完毕后, 实例代码块(构造块)执行,再然后是构造函数执行
8.toString方法
Person persopn = new Person();
System.out.println(perspn);
注:对于上面的打印语句,如果没有重写toString方法,它调用的是Object类的toString方法,输出的是:类名@地址的哈希值
1.toString 方法会在 println 的时候被自动调用.
2.将对象转成字符串这样的操作我们称为 序列化.
3.toString 是 Object 类提供的方法, 我们自己创建的 Person 类默认继承自 Object 类, 可以重写 toString 方法实现我们自己版本的转换字符串方法
9.匿名对象
1.匿名只是表示没有名字的对象.
2.没有引用的对象称为匿名对象.
3.匿名对象只能在创建对象时使用.
4.如果一个对象只是用一次, 则可以使用匿名对象。
10.Java中静态常量、常量、成员属性在内存中的存储
上一篇: Java类和对象总结
下一篇: bootargs和bootcmd含义
推荐阅读
-
Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
-
java包装类和值类型的关系
-
Java中数组操作 java.util.Arrays 类常用方法的使用
-
BootStrap 获得轮播中的索引和当前活动的焦点对象
-
Javascript中类式继承和原型式继承的实现方法和区别之处
-
java 抽象类和接口的区别详细解析
-
详谈js中数组(array)和对象(object)的区别
-
[Java] 父类和子类拥有同名的成员变量(fields)的情况
-
[python] 在 python2和3中关于类继承的 super方法简要说明
-
Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate