java面向对象
1、java类以及类的成员:属性 方法 构造方法 代码块 内部类
2、面向对象的特征:封装 继承 多态 接口
3、关键字: this super static final
1、编程
1、面向对象编程:从事情中抽离出相关的对象,然后从对象出发,解决问题。可以提高代码的活用性和维护扩张性。
2、面向过程编程:按照过程的一步一步做。
2、类和对象的关系
-
类:是创建对象的模板,是抽象的,是不占存储空间的
-
对象:是类的实例化,是具体的,是占用存储空间的
3、类
3.1、类的要求
package com.oop;
public class Test {
}
//class是类的关键字
//cat是类名,可以自定义,
//规范要求:首字母大写,严谨说法(采用驼峰写法)
//类名语法要求:主类名要和文件名一致,其中所说的类是主类
//对于类来说,访问权限修饰符有两个:
// 1、public(主类) 2、默认空(普通类)只可以在同一个包下访问
//一个类文件可以定义多个类,但是只能定义一个主类
//{}是类体
class CatGs{
}
3.2、类的实例化
class Test{
public static void main(String[] args) {
Cat cat=new Cat(); //类的实例化,实质就是给类在堆中开辟空间
//cat():构造方法
//new 关键字-->告诉虚拟机jvm开辟空间
//cat:对象名,也就是实际的对象
//Cat:定义数据类型
}
}
3.3、类属性和对象属性
(1)、属性(成员变量)对象属性(不用static修饰):(非静态属性):在堆中动态开辟空间
(2)、类属性:公用的(即每一个对象都要使用的叫做类属性,都是公用的)静态:进入jvm中拥有了自己的空间
//不用static修饰的叫做:对象属性(非静态属性):在堆中动态开辟空间
//用了static修饰的叫:类属性-->公用的
//属性(成员变量)
static String name; //类属性:公用的(即每一个对象都要使用的叫做类属性,都是公用的)静态:进入jvm中拥有了自己的空间
int age; //非类属性:(对象属性)
String sex;
3.4、访问类中的:对象属性和类属性
1、使用对象来访问:对象名.对象属性
2、使用类来访问:类名.类属性
注意:先创建了类,但是但是对象属性并不一定创建出来,所以可以用类访问类属性,但是类并不能访问到对象的属性,还没有创建出来。但是当对象被new出来了之后,类肯定是创建出来了,因为对象在类里,此时用对象去访问类属性则能访问到。
类是不能访问到对象属性的:如图第三个System
package com.oop;
public class Cat {
//不用static修饰的叫做:对象属性(非静态属性):在堆中动态开辟空间
//用了static修饰的叫:类属性-->公用的
//属性(成员变量)
static String name; //类属性:公用的(即每一个对象都要使用的叫做类属性,都是公用的)静态:进入jvm中拥有了自己的空间
int age; //非类属性:
String sex;
}
class Test{
public static void main(String[] args) {
Cat xiaohua=new Cat(); //类的实例化,实质就是给类在堆中开辟空间
//使用对象来访问:对象名.对象属性
System.out.println("小狗的默认年龄:"+xiaohua.age);
//使用类来访问:类名.类属性
System.out.println("使用类来访问小狗的默认名字:"+Cat.name);
}
}
4、普通方法(对象方法)和类方法
1、普通方法 分为对象方法(非静态方法):在堆中动态开辟空间------>(可以和对象属性一样的理解)
2、类方法:(静态方法):进入了jvm中拥有了自己的空间--------->(可以和类属性一样的理解)
注意:方法调用时只可以调用已经存在的方法:对象方法既可以调用类方法,也可以调用对象方法。而类方法可以调用类方法,不可以直接调用对象方法
解决方法:可以在类方法中new出来对象就可以调用对象的方法
记住:先创建类,再动态产生对象,只有new时才会产生对象。
5、权限修饰符
public static String name; //公有的
private int age; //私有的
protected String sex; //受保护的
int gg; //默认的
修饰符 | 当前类 | 同包 | 继承(子类) | 其他类 |
---|---|---|---|---|
public | ✔ | ✔ | ✔ | ✔ |
protected | ✔ | ✔ | ✔ | × |
默认 | ✔ | ✔ | × | × |
private | ✔ | × | × | × |
- protected:new 的时候new的对象为子类,去调用父类的方法及其变量才行,不能直接new父类,那就用不到继承的思想,单纯的只有对象方法的调用了