1、面向对象和面向过程
1.1、面向对象
面向对象注重的是结果,拿来直接使用
1.2、面向过程
面向过程注重的是完成任务的过程,怎样去完成这个任务
例如:去餐馆吃饭,你只需要负责点菜,而不需要知道怎样做菜,点菜这个操作就是面向对象,怎样做菜就是面向过程
2、面向对象的三大特性
1、封装:把相关数据封装成一个类
2、继承:子类继承父类的属性和方法
3、多态:增强软件的灵活性和重用性
3、类和对象
3.1、类和对象的概念
类是抽象的,定义的是一类事物,如:老师,汽车,水果
对象是具体的实现
3.2、练习:类的创建和使用
在一个java文件中可以创建多个class,
但是被public修饰的class只能有一个
并且必须是java文件名
package cn.tedu.oop;
/*本类用于练习面向对象入门案例*/
/*在一个java文件中可以创建多个class
但是被public修饰的class只能有一个
* */
public class TestCreateClass {
public static void main(String[] args) {
/*通过new关键字来创建对象*/
Phone p = new Phone();
Phone p2 = new Phone();
/*通过.来调用对象的功能,类似于中文"的"*/
p.call();
p.message();
p.video();
p2.video();
System.out.println(p.brand);
System.out.println(p.price);
System.out.println(p.size);
System.out.println(p.color);
System.out.println(p2.brand);
System.out.println("===================");
//修改成员变量的值
p.brand="华为";
p.price=4599;
p.size=5.8;
p.color="魅蓝";
System.out.println(p.brand);
System.out.println(p.price);
System.out.println(p.size);
System.out.println(p.color);
}
}
//创建手机类
class Phone{
String brand;
double price;
double size;
String color;
public void call(){
System.out.println("正在打电话");
}
public void message(){
System.out.println("正在发短信");
}
public void video(){
System.out.println("正在看直播");
}
}
4、创建对象在内存中的过程分析
4.1、队列和栈
队列:先进先出
.
栈:先进后出;先进去的会被压入栈底
.
4.2、new一个对象JVM内存中的操作过程
.
5、封装
5.1、封装的作用
1、提高安全系
2、提高复用性
5.2、private关键字
private可以修饰成员变量和成员方法,被修饰的成员只能在本类中访问
5.3、案例:封装成员变量
package cn.tedu.oop;
/*本类用于测试面向对象之封装*/
public class TestPrivate {
public static void main(String[] args) {
Student student = new Student();
/*student.id=1;
student.name="游乐王子";
student.subject="java大数据";*/
student.setId(1);
student.setName("游乐王子");
student.setSubject("java大数据2");
/*System.out.println(student.id);
System.out.println(student.name);
System.out.println(student.subject);*/
System.out.println(student.getId());
System.out.println(student.getName());
System.out.println(student.getSubject());
System.out.println("==============");
student.study();
student.play();
}
}
class Student{
private int id;
private String name;
private String subject;//被private修饰的资源是私有资源,只能在本类中访问,外部无法访问
public void study(){
System.out.println("好好学习,天天向上!");
}
public void play(){
System.out.println("学习之余,娱乐一下~");
}
/*如果一个方法需要返回结果,那么通过return关键字返回
* 注意返回值类型必须和subject的类型保持一致*/
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
5.4、案例:方法的封装
package cn.tedu.oop;
public class TestMethodPrivate {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
}
}
class Dog{
public void eat(){
System.out.println("小狗爱吃骨头");
play();
}
private void play(){
System.out.println("小狗捉耗子~");
}
}
私有方法的调用:把私有方法放入公共方法内