如何做网站的301重定向,私密浏览器免费版在线看视频,应用软件开发过程,html5集团网站#x1f516;面向对象 #x1f4d6; Java作为面向对象的编程语言#xff0c;我们首先必须要了解类和对象的概念#xff0c;本章的所有内容和知识都是围绕类和对象展开的#xff01; ▐ 思维导图1 ▐ 类和对象的概念 • 简单来说#xff0c;类就是对具有相同特征的一类事…面向对象 Java作为面向对象的编程语言我们首先必须要了解类和对象的概念本章的所有内容和知识都是围绕类和对象展开的 ▐ 思维导图1 ▐ 类和对象的概念 • 简单来说类就是对具有相同特征的一类事物的描述而对象是类的具体实例. • 比如说 车 就是一个大的概念它可以具体化为奔驰、宝马、帕拉梅拉。那么车就是一个类奔驰车就是以车类为模版的一个实例化对象。 • 一个类中包含成员变量和成员方法 上图程序最终输出50W帕拉梅拉 is running ▐ 构造方法 • 构造方法的作用是初始化对象并且分为无参构造方法和有参构造方法 • 构造方法的方法名与类名相同没有返回值且不需要void修饰。 • 如果一个类没有定义构造方法Java会提供一个默认的无参构造方法 • 在一个类中可以有多个构造方法 ( 构造方法可以重载 ).
public class Car {String name;String price;//无参构造方法public Car(){name帕拉梅拉;price50W;System.out.println(nameprice);}//有参构造方法public Car(String name,String price){this.namename;this.priceprice;System.out.println(nameprice);}public static void main(String[] args) {new Car();//输出: 帕拉梅拉50Wnew Car(奔驰,40W);//输出: 奔驰40W}
}▐ 方法的重载 • 当一个类中有多个名字相同的方法时可以通过参数的个数、类型、顺序在调用时进行区分 • 方法的重载与返回值类型无关
public class Car {String name;String price;int count;//有参构造方法public Car(String name,String price){this.namename;this.priceprice;System.out.println(nameprice);}//参数的类型不同public Car(String name,int count){this.namename;this.countcount;System.out.println(namecount);}//参数顺序不同public Car(int count,String name){this.namename;this.countcount;System.out.println(namecount);}public static void main(String[] args) {new Car(奔驰,40W);//输出: 奔驰40Wnew Car(帕拉梅拉,6);//输出: 帕拉梅拉6new Car(6, 帕拉梅拉);//输出: 帕拉梅拉6}
} ▐ this与super关键字 • this在类中表示当前正在访问的对象主要是为了区分成员变量和局部变量 ▐ 封装 • 即为成员变量或成员方法添加一个访问权限修饰符使外界不得随意操作主动权在类的手中 . 访问权限修饰符 • public 公共权限 ------- 修饰的成员在任何地方都可以访问到. • protected 受保护权限 ---- 在本类 / 同包的其他类中可以访问到及不同包的子类. • default 默认权限 ------- 在本类 / 同包的其他类中可以访问到. • private 私有权限 ------ 只能在本类访问到. (常用) protected和默认(default)的区别就是,protected可以在不同包的子类中访问 • 封装起来之后通常是通过类中向外提供的特殊方法进行访问这样就可以加入控制语句
public class Car {private String name;//向外提供set和get方法public String getName() {return name;}public void setName(String name) {//加入控制语句if(name.length()5){this.name name;}}
} ▐ 代码块 • 代码块就是在类中声明的一个没有名字的代码块分为实例代码块和静态代码块 • 实例代码块: 在每次创建对象时执行静态代码块: 在类被加载时自动执行 格式 { 实例代码块内容 } static { 静态代码块内容 } 类什么时候会被加载 • 运行类中的main方法时. • 访问类中的静态成员变量或静态成员方法时. • 创建类的对象时. public class Car {{System.out.println(实例代码块);}static {System.out.println(静态代码块);}public static void main(String[] args) {new Car();new Car();new Car();/*依次输出:静态代码块实例代码块实例代码块实例代码块*/}
} ▐ static关键字 • static静态的意思static关键字可以修饰类中的成员变量成员方法代码块内部类. 不能修饰构造方法 • static修饰成员变量 静态成员变量也称类变量在内存中只有一份所有对象可以共享一般情况下将类中所有对象都相同的属性设置为静态的。 • static修饰成员方法 修饰的成员方法也称为类方法可以直接使用类名访问在静态的方法中只能访问静态的成员变量非静态的方法中可以使用静态的成员变量。 • static关键字修饰的属性特点 • 随着类的加载而加载 • 优先于对象存在 • 静态成员被所有对象共享 • 可以直接使用类名访问 注意 • 静态的方法中只能使用静态的成员变量因为他们都是随着类的加载而加载的 • 一旦方法中使用了非静态的成员变量那么此方法就不能定义为静态的但非静态的方法中可以使用静态的成员变量 ▐ 思维导图2 面向对象的三大特征封装继承多态是本章的重点第二部分将围绕继承和多态展开 ▐ 继承 • 简单来说继承就是将某一事物的共同属性抽取出来单独定义一个类 (父类)其它子类可以继承父类这样不仅实现了代码的复用子类也可以扩展自己特有的功能。 • 举个简单的例子现在有三个动物猫狗鸟它们都有一个共同属性名字name那么就可以将name属性定义在一个Animal动物类中也就是父类这样就不需要在猫狗鸟类中分别定义name属性了它们只需继承Animal父类即可。 • 继承具有传递性即一个类只能直接继承一个类但可以间接继承多个类。 • 继承使用的是extends关键字子类继承父类后拥有了父类的成员变量和成员方法 • 子类不能继承父类中的私有属性
public class Cat extends Animal{//Cat继承Animal的成员变量和成员方法但不能访问私有成员
} 当一个类没有显示继承其他类的时候默认继承object类Object类是java类体系中最大的 类Object类之上再也没有别的类。 ▐ 多态 • 多态的使用前提是两个类存在继承关系 • 多态也称向上转型也就是将子类类型向上转为父类类型
Animal dog new Dog(); • 多态实现了用父类类型表示任意子类类型的对象利于程序扩展
通过一个案例给大家解释下吧
public class Animal {public void makeSound() {System.out.println(Animal is making a sound);}
}
public class Dog extends Animal{Override//方法的重写public void makeSound() {System.out.println(Dog is barking);}public static void main(String[] args) {Animal dog new Dog();//现在我们可以使用Animal类的引用来引用Dog对象dog.makeSound(); //输出Dog is barking}
}
在上述案例中Animal引用的是一个Dog对象但是调用的是Dog类中重写的makeSound()方法这就是多态的效果 如果你对这个案例还有疑惑这里有个小口诀 编译看左边运行看右边 Animal dog new Dog(); 意思是编译时我们看左边Animal类中的属性运行是看右边Dog类中的内容 ▐ 方法的重写
在上述多态的案例中我们就用了方法的重写在子类Dog中对父类Animal中的makeSound方法进行了重写最终运行的是重写后的方法中的内容。所以方法的重写也就是当父类中方法的实现不能满足子类需求时在子类中对父类的方法进行重写 / 覆盖这样调用时就会调用子类中重写的方法.
重写时需要注意 • 子类重写的方法结构与父类方法的结果必须一致 ( 即方法名参数列表返回值类型必须一致 • 构造方法和静态方法不能重写成员变量不存在重写。 • 使用 Override 注解标签 ▐ 结语 希望这篇关于对 Java面向对象的基础知识总结 能对大家有所帮助欢迎大佬们留言或私信与我交流~~学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!
本人微信: g2279605572