面向对象
面向过程:
所有事都自己做
如:做饭,自己先买菜,自己做配料,自己炒菜,自己刷锅,端上桌子,开吃
面向对象:
把事情交给对象去做
如:自己交给对象去做,自己找一个厨子做,也可以点一个外卖,自己就直接等着吃,不用自己亲自做
类与对象
类
模板,一类事物。静态的是属性,动态的是方法。
比如:学生、姓名、年龄是属性(名词)
学习、吃饭、睡觉是方法(动词)
对象
类的具体实现
比如:name=张三
//学生类 Student
public class Student{
String name;
int age;
public void study(){
System.out.println("学生学习");
}
public void sleep(){
System.out.println("学生睡觉");
}
}
创建对象
格式
类名 对象名 = new 类名();
调用属性
对象.属性名 = 值;
调用方法
对象.方法名(参数);
输出对象
打印的是地址值
具体举例
public class Student{
String name;
int age;
public void study(){
System.out.println("学生学习");
}
public void sleep(){
System.out.println("学生睡觉");
}
}
//主函数,方法入口
public class Demo {
public static void main(String[] args){
//创建对象,调用属性和方法
//类名 对象名 = new 类名()
Student s1= new Student();
s1.name="张三";
s1.age= 20;
//调用属性
System.out.println(s1.name);//打印张三
System.out.println(s1.age);//打印20
//println与print区别:println打印后自动换行;print不换行
//调用方法
s1.study();//打印学生学习
s1.sleep()//打印学生睡觉
System.out.println(s1);//打印对象,是一个地址值:Student@6d06d9c
}
}
Java 构造方法
作用
1.创建对象 或 初始化对象
2.给成员变量赋值
3.如果不写任何构造方法,Java会提供一个空参构造,如果写了任意构造,就不再提供空参构造
4.方法名与类名相同,没有返回值
格式
public 类名(){
//无参构造
}
public 类名(String name,int age){
//有参构造
this.name=name;
this.age=age;
}
构造方法具体实例
在public class Student{
String name;
int age;
public Student(){
//无参构造
}
public Student(String n,int a){
//有参构造
name=n;//n赋值给neme
age=a;
}
}
public class Demo2 {
public static void main(String[] args){
//构造方法
//空参构造
Student s1= new Student();
//有参构造
Student s2= new Student("李四",16);
System.out.println(s1.name +"==="+s1.age);//打印null===0,是一个默认值
System.out.println(s2.name +"==="+s2.age);//打印李四===16
}
}
关键字this
在public class Student{
String name;
int age;
public Student(){
//
}
//public Student(String n,int a){
//
//name=n;//
//age=a;
}
//就近原则,找neme,先在自己方法里找,找不到再到类里找,最近是找到括号里参数neme,可以用this关键字解决就近原则,带来的对象混乱
public Student(String name,int age){
//this关键字,代表的是自己本类对象;那么他调用的就是成员属性
//this代表对象。this点,代表成员属性
this.name=name;//这里name不知道是哪个neme有点乱,用this关键字就清楚了
this.age=age;
}
}
public class Demo3 {
public static void main(String[] args){
//this关键字
//Student s1= new Student();
Student s= new Student("李四",16);
System.out.println(s1.name +"==="+s1.age);//如果上面Student类里没用this关键字,有参数也打印null===0,
System.out.println(s1.name +"==="+s1.age);//如果Student类里用this关键字,有参数打印打印李四===16,
}
}
Java基础 static 关键字
作用:
无需new创建对应,就可以直接用类名点方法名或属性名(变量名)进行调用
static 关键字可以直接使用在方法名前或变量名前
特点:
静态只能直接访问静态:静态方法就是带static关键字的方法
//类 class teacher
public class teacher{
//static 关键字可以直接使用在方法名前或变量名前
String name;
static int age;//这里属性名(变量名)带static
public void eat(){//这里方法不带static
System.out.println("老师吃饭");
}
public static void sleep(){//这里方法带static
System.out.println("老师睡觉");
}
}
//再写一个类Demo 调用类Teacher
//类Demo
public class Demo {
public static void main(String[] args){
Teacher.age= 30;
//Teacher.name= "王五";//这里就不可以直接调用Teacher.name,因为Teacer类里name变量名前 没放 static
Teacher.sleep();//这里打印:老师睡觉
System.out.println(Teacher.age);//这里打印30
System.out.println(Teacher.name);//这里直接调用name会报错
//如果这里非要调用Teacher.name怎么办?那就要new一个对象
Teacher tescher= new Teacher();
tescher.nane="李晓东"
tescher.eat()//调用eat方法,打印老师吃饭
System.out.println(Teacher.name);//打印李晓东
}
}