类:是对象共同特征的描述。
对象:是真实存在的具体实例。
结论:在java中,必须先设计类,才能创建对象并使用。
public class Car {
// 成员变量
String name;
double price;
// 方法
public void start(){
System.out.println(name + "启动了");
}
public void run(){
System.out.println("价格为:" + price + "的" + name + "跑起来了");
}
}
对象:
public class Test {
public static void main(String[] args) {
// 创建汽车对象
Car c = new Car();
c.name = "红旗";
c.price = 25.5;
System.out.println(c.name);
System.out.println(c.price);
c.start();
c.run();
System.out.println("-------------------");
Car c2 = new Car();
c2.name = "五菱宏光";
c2.price = 9.2;
System.out.println(c2.name);
System.out.println(c2.price);
c2.start();
c2.run();
}
}
定义类的补充注意事项:
构造器的作用:
构造器的格式:
调用构造器得到对象的格式:
构造器的分类和作用:
构造器的注意事项:
// 构造器
public class Car {
String name;
double price;
public Car(){
System.out.println("--无参构造器被调用--");
}
public Car(String n,double p){
System.out.println("--有参构造器被调用--");
name = n;
price = p;
}
}
//调用构造器创建对象
public class Test {
public static void main(String[] args) {
//通过调用构造器得到对象
Car c = new Car();
c.name = "Benz";
c.price = 59.6;
//调用有参构造器
Car c2= new Car("BWM", 42.8);
}
}
this关键字是什么:
this关键字的作用:
区别:
public class Car {
String name;
double price;
public Car(String name,double price){
this.name = name;
this.price = price;
}
// 有this
public void goWith(String name){
System.out.println(this.name + "正在和" + name + "比赛~");
}
}
public class Test {
public static void main(String[] args) {
Car c= new Car("BWM", 42.8);
c.goWith("Benz");
}
}
// 运行结果:BWM正在和Benz比赛~
public class Car {
String name;
double price;
public Car(String name,double price){
this.name = name;
this.price = price;
}
// 没有this,name会就近传值
public void goWith(String name){
System.out.println(name + "正在和" + name + "比赛~");
}
}
public class Test {
public static void main(String[] args) {
Car c= new Car("BWM", 42.8);
c.goWith("Benz");
}
}
// 运行结果:Benz正在和Benz比赛~
面向对象的三大特征:封装、继承、多态。
封装:告诉我们,如何正确设计对象的属性和方法。
封装的原则:对象代表什么,就要封装对应的数据,并提供数据对应的行为。
人画圆,画圆方法是属于圆的。而不属于人的。
public class Student {
// 1、成员变量 使用private修饰,只能在本类中访问了
private int age;
/**
2、提供成套的getter和setter方法暴露其取值和赋值
*/
public void setAge(int age){
if (age >= 0 && age <= 200){
this.age = age;
}else {
System.out.println("您的年龄数据有问题!");
}
}
public int getAge(){
return age;
}
}
public class Test1 {
public static void main(String[] args){
Student s = new Student();
s.setAge(23);
System.out.println(s.getAge());
}
}
// 运行结果:23
public class Test1 {
public static void main(String[] args){
Student s = new Student();
s.setAge(-23);
System.out.println(s.getAge());
}
}
// 运行结果:您的年龄数据有问题!
JavaBean:
标准JavaBean须满足如下书写要求:
书写规范:
public class User {
// 1、成员变量建议使用private私有
private String name;
private double height;
private double salary;
/**
* 2、 要求提供无参数构造器,有参数构造器是可选的
*/
public User() {
}
public User(String name, double height, double salary) {
this.name = name;
this.height = height;
this.salary = salary;
}
/**
* 3、 必须为成员变量提供成套的setter和getter方法
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
成员变量和局部变量的区别: