面向对象的三大特征
封装: 把相关的数据封装成一个“类”组件
继承: 是子类自动共享父类属性和方法,这是类之间的一种关系
多态: 增强软件的灵活性和重用性
在一个java文件中可以写多个class,但是public形容的类只能有一个,并且公共类的名字必须与文件名一样
栈和队列
TIPS: 栈与队列指的是一种数据的结构。
栈:先进后出(FILO – First In Last Out)
队列:先进先出(FIFO – First In First Out)
对象的创建过程分析
Phone p = new Phone(); 这句代码,再内存中会发生什么呢?
1.在栈内存中开辟一块空间,存放引用类型Phone类型的变量p
2.在堆内存中开辟一块空间,存放Phone类型的对象
3.要给这个对象进行初始化,比如:String brand = null;
4.当对象准备好以后,会生成一个唯一的地址值,然后将此地址值交给引用类型的变量p来保存
5.如果以后想要操作此对象的各种资源,可以通过p变量保存的地址值找到该对象,比如:p.call(); p.price = 66.6;
创建2个对象
私有对象的调用(private)
package cn.tedu.oop;
//测试oop的第一大特性:封装
public class TestPrivate2 {
public static void main(String[] args) {
Student s1=new Student();
s1.setName("派大星");
s1.setSubject("草裙舞");
s1.sno=14;
System.out.println(s1.getName());
System.out.println(s1.getSubject());
System.out.println(s1.sno);
Student s2=new Student();
s2.eat();
s2.sleep();
s2.study();
}
}
class Student{
private String name;
int sno;
private String subject;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void study(){
System.out.println("正在学习中");
}
public void eat(){
System.out.println("正在吃饭");
}
public void sleep(){
System.out.println("不睡觉,学java");
}
}
输出结果:
派大星
草裙舞
14
正在吃饭
不睡觉,学java
正在学习中
私有方法的调用(private)
package cn.tedu.oop;
//本类用于方法的封装
public class TestPrivate3 {
public static void main(String[] args) {
apple a=new apple();
a.clean();
}
}
class apple{
public void clean(){
System.out.println("洗苹果");
//对private修饰的方法进行调用
eat();
}
//private修饰方法只能在本类中使用
private void eat(){
System.out.println("吃苹果");
}
}
输出结果:
洗苹果
吃苹果
访问控制符
单词
duplicate 重复的
declared 声明,定义