目录
抽象类:
package chapter04;
public class JavaAbstract {
public static void main(String[] args) {
//TODO 面向对象 - 抽象 - Abstract
// 抽象类 不完整的类,就是抽象类
// abstart class 类名
// 因为类不完整,所以无法直接构造对象
// 抽象方法
// 分析问题: 对象(具体) => 类(抽象)
// 编写代码:类(抽象) => 对象
Person21 person21 = new Person21();//会报错,抽象类不能直接构造对象
Chinese21 c = new Chinese21();//需要子类继承然后重写抽象方法为具体的方法
c.eat();
}
}
abstract class Person21{
public abstract void eat();
}
class Chinese21 extends Person21{
public void eat() {
System.out.println("中国人用筷子吃饭");
}
}
重写
public class JavaCx {
public static void main(String[] args) {
//TODO 方法重写
//方法的重写: 父类对象的方法其实主要体现通用性,无法在特殊场合下使用
// 如果子类对象需要在特殊的场合下使用,那么就需要重写方法的逻辑,这个操作在Java中称之为方法的重写。
//这里的重写并不意味父类的方法被覆盖,之事当前场合不使用,如果使用super关键字还是可以访问。
//方法的重写要求,子类的方法和父类的方法,方法名相同,返回值类型相同,参数列表要相同。
Child15 child = new Child15();
child.test();
}
}
class Parent15 {
String name = "zhangsan";
void test(){
System.out.println("parent test");
}
}
class Child15 extends Parent15 {
String name = "lisi";
void test() {
super.test();
System.out.println(this.name);
System.out.println(super.name);
}
}
重写易错点
public class JavaCxTest {
public static void main(String[] args) {
//TODO 面向对象-重写test
//一个对象使用什么方法,取决于引用变量的类型
//一个对象的方法具体的使用时需要看具体的对象的
//一个对象使用什么属性,取决于引用变量的类型
//一个对象的属性具体的使用时不需要看具体的对象的,属性在哪里使用在哪里看
CCC ddd = new DDD();
System.out.println(ddd.sum());
// ddd.eat(); //不能使用 ,要取决于引用变量的类型
}
}
class CCC {
int sum(){
return 0;
}
}
class DDD extends CCC{
int i = 20;
int sum(){
return i+20;
}
int eat(){
System.out.println("ddddd");
}
}
重载
package chapter04;
public class JavaCz {
public static void main(String[] args) {
//TODO 面向对象
//一个类中,不能重复声明的相同的方法,也不能声明相同的属性
//这里相同的方法指的是方法名,参数列表相同,和返回值类型无关
//如果方法名相同,但是参数列表(个数,顺序,类型)不同,会认为是不同的方法,只不过名称一样
//这个操作在Java称之方法的重载
User14 user = new User14("zhangsan");
user.login(111);
user.login("zhangd","sljfls");
user.login("lfsjflos");
}
}
class User14{
User14(String name){
System.out.println("user.."+name);
}
User14(){
System.out.println("user...");
}
void login(String username, String password){
System.out.println("账号,密码登录");
}
void login(int tel){
System.out.println("手机验证码登录");
}
void login(String wx){
System.out.println("微信,支付宝登录。。。");
}
}
多态
public class JavaDuoTai {
//TODO 面向对象 -多态
//所谓的多态,其实就是一个对象在不同场景下表示出来的不同状态和形态
// 多态语法其实就是对对象的使用场景进行约束
//一个对象可以使用的功能取决于引用变量的类型
Person p = new Person();
Person p1 = new Boy();
Person p3 = new Girl();
}
class Person {
void testPerson(){
System.out.println("test");
}
}
class Boy extends Person {
void testBoy(){
System.out.println("Boytest");
}
}
class Girl extends Person {
void testGirl(){
System.out.println("Girltest");
}
}
访问权限
package chapter04;
public class JavaFwqx {
public static void main(String[] args) {
//TODO 面向对象 - 访问权限
//public : 公共的,访问权限修饰符
// java 的源码中,公共类只能有一个,而且必须和源码文件名相同
//main方法:main方法是由jvm调用时应该可以任意调用,而不用考虑权限问题。
//TODO java中的访问权限主要分为4中:
// 1.private : 私有的,同一个类中可以使用
// 2.(default) : 默认权限,当不设定任何权限时,jvm会默认提供权限,包权限。
// 3.protected : 受保护的权限,子类可以访问
// 4.public : 公共的,任意使用
User17 user = new User17();
// System.out.println(user.name);
System.out.println(user.username);
user.test();
}
}
class User17 {
private String name;
public String username;
void test(){
System.out.println(name);
System.out.println(username);
}
}