java面向对象知识点02
(面向对象第二张,我们已经学习过半,所学内容也都复杂起来。如有小伙伴发现错误,请在评论区留言让我即使更正,不要误导别人)
8.static静态
使用static去访问变量时,推荐使用类名进行访问。
特点:
1.数据共享,使用static,每个对象都可以接收
2.属于类,并不属于对象
3.优先于对象产生的
public class person{String name;static String country = "大清";String address;public Person(String name,String country,String address){this.name = name;this.country = country;this.address = address;}public static void main(String[] args){Person p1 = new Person("赵铁柱","大清","八大胡同");Person p2 = new Person("李小花","大清","朝阳门");//大清亡了// p1.country = "民国";// p2.country = "民国";//用类名访问Person.country = "民国";//使用static静态}}
通用构造器,
静态构造器相当于两个大括号
创建对象的过程(简单):过程
1.静态构造器
2.通用构造器
3.构造方法—>创建对象时用的
static {System.out.println("静态构造器");//先执行}{System.out.println("这里是通用构造器");}public oopDay05(){System.out.println("构造方法");}
- 由于创建对象的过程是在静态内容加载完成后,在静态方法和静态块里不能使用this
- 静态的内容使用类名访问
public class Test{public static void pen(){System.out.println("还我钱");}public static void mian(String[] args){pen();//静态方法里调用静态的东西是可以的Test.pen();//使用类名去访问静态方法}
}
9.包和导包
包:其实本质上是文件夹。
在代码中需要写package包名;
导包:import+包+类;不需要导包:
1.在自己包里
2.java.long包下的所有内容都不需要导包
String
System.out.println()
//把entity包下的Person类导入到当前文件
package com.scy.www;//包的声明,表示当前类,从属于en
import com.scy.www;
10.访问权限
1.public 公共的 所有人都可以访问
2.default 包访问权限在自己包内可以随意访问
3.private 私有的
日常生活中用的最多的是public和private
package com.scy.cn
public class Person{public String pub = "public";private String pri = ""private; String def = "default";public static void main(String[] args){Person p = new Person();System.out.println(p.pub);//公共的System.out.println(p.pri);//私有的System.out.println(p.def);//包了的//测试方法1.在同类中输出2.在同包不同类中输出3.在不同包中输出}}
11._getter和setter
- 为啥要用?工资
- 成员变量一般使用private来生声明,保护成员变量不被胡乱赋值
- setter主要是给成员变量赋值,做一定的保护
- getter从成员变量中获取数值
- 快速生成
空白位置-> 右键->generate->getter and setter->选中快速生成
package com.scy.cn;public class Persson {//成员变量是私有的private String name;private int age;//setterpublic void setName(String name) {this.name = name;}//有效的保护我们的成员变量不被胡乱的赋值public void setAge(int age) {if (age<0){this.age = 0;}else{this.age=age;}this.age = age;}//getterpublic String getName() {return name;}public int getAge() {return age;}public void chi(){System.out.println(this.name+"在吃东西");}
}
package com.scy.cn;public class Test {public static void main(String[] args) {Persson p = new Persson();p.setName("周润发");p.setAge(12);//查看这个人的名字和年龄p.chi();System.out.println(p.getName());}
}
12._继承
继承:子类可以自动拥有父类中除了私有内容外的其他所有内容。
当出现x是一种y的时候,x就可以继承y
黑熊怪是一种妖怪
public class 类 extends 父类{
}
作用:简化代码开发
相当于子类对父类的扩展
package com.oop.jicheng.D1;public class YaoGuai {String name;private void paSi(){System.out.println("妖怪都怕死");}public void chiRen(){System.out.println("妖怪会吃人");}
}
package com.oop.jicheng.D1;public class HeiXiongGuai extends YaoGuai {//子类对父类进行了扩展public void tou(){System.out.println("黑熊怪偷袈裟");}
}
package com.oop.jicheng.D1;public class Test {public static void main(String[] args) {HeiXiongGuai hx = new HeiXiongGuai();hx.chiRen();hx.name = "大黑熊";System.out.println(hx.name);hx.tou();//hx.paSi();//私有的内容是不能继承的}
}
13._super关键字
this访问本类对象,super访问父类对象
用super和this来区分父类和子类中重名的内容。
1.super可以获取父类中的内容
2.可以调用父类中的构造方法,必须写在子类构造方法的第一行,如果父类的构造是无参数的,可以不写,如果父类没有无参数的构造,必须要写super
package com.oop.ChongXie;
//super关键字
public class oopDay12 {String name = "英雄";public oopDay12(String name){System.out.println("我是父类的构造方法");this.name = name;}}
、package com.oop.ChongXie;
//super关键字
public class oopDay13 extends oopDay12 {String name = "孙大圣";public oopDay13(){super("武大郎");//还原语句,在子类构造方法的第一句,默认调用父类的构造方法System.out.println("我是子类构造方法");}public void chi(){System.out.println(super.name);System.out.println(this.name+"吃桃子");//子类}public static void main(String[] args) {oopDay13 s = new oopDay13();s.chi();}}
14.方法的重写
重写:子类对父类中提供的方法进行重新定义
语法:子类和父类中的方法声明完全一致
重写又被称为方法的覆盖
package com.oop.ChongXie;
//父类
//重写public class LiYuan {public void LiYuan(){System.out.println("我要创建一个帝国");}
}
package com.oop.ChongXie;
public class LiShiMin extends LiYuan {//子类中的方法必须和父类中的一致public void LiYuan(){//方法的重写//半盖super.LiYuan();//super可以调用父类中被覆盖的方法System.out.println("我也想创建一个帝国" );}public static void main(String[] args) {LiShiMin lsm = new LiShiMin();lsm.LiYuan ();}
}
15.多态
多态:同一个对象拥有多种属性
作用:把不同的数据类型进行统一
知识点:
1.把子类的对象赋值给父类的变量-》向上转型
缺点:屏蔽掉子类中特有的方法
2.把父类的变量转化回子类的变量-》向下转型
向下转型有可能有风险.java要求必须要写强制类型转换
(转换之后的数据类型)变量
package com.oop.DuoTai;
//多态
//猫是一种动物--继承关系
public class Cat extends DongWu {public void eat(){System.out.println("猫吃鱼");}public void zhua(){System.out.println("猫喜欢抓老鼠");}}
package com.oop.DuoTai;public class Dog extends DongWu{public void eat(){System.out.println("狗吃骨头");}
}
package com.oop.DuoTai;public class DaXiang extends DongWu {public void eat(){System.out.println("大象喝水");}
}
package com.oop.DuoTai;public class person {public void feed(DongWu dw){dw.eat();}
// public void feedCat(Cat c){// c.eat();
// }
// public void feedDog(Dog d){// d.eat();
// }
// public void feedDaXiang(DaXiang dx){// dx.eat();
// }
}
package com.oop.DuoTai;public class DongWu {public void eat(){System.out.println("动物在吃");}}
package com.oop.DuoTai;public class Test {public static void main(String[] args) {// Cat c = new Cat();
// Dog d = new Dog();
// DaXiang dx = new DaXiang();
// person p = new person();
// p.feedCat(c);
// p.feedDog(d);
// p.feedDaXiang(dx);// Cat c = new Cat();创建一只猫DongWu dw1 = new Cat();DongWu dw2 = new DaXiang();DongWu dw3 = new Dog();person p = new person();p.feed(dw1);p.feed(dw2);p.feed(dw3);//向下转型Cat cc = (Cat)dw1;cc.zhua();}}
小练习:
package lianxi;public class Game {public void start(){System.out.println("开机");}public void play(){System.out.println("打游戏");}public void end(){System.out.println("关机");}
}
class DNF extends Game{public void play(){System.out.println("刷刷刷,刷Bass");}
}
class LOL extends Game{public void play(){System.out.println("云顶之弈下棋" );}
}
class CS extends Game{public void play(){System.out.println("一对一,对狙");}
}
class Player {public void happy(Game game){game.start();//一定是父类的方法game.play();//不一定game.end();//一定是父类的方法System.out.println("玩的真爽");}}
class Cllent {public static void main(String[] args) {Game game1 = new LOL();Game game2= new DNF();Game game3 = new CS();Player p = new Player();p.happy(game1);p.happy(game2);p.happy(game3);}
}
java面向对象知识点02相关推荐
- java面向对象知识点整理--用前人智慧,为后人铺路
自己学习Java面向对象时对知识点的整理总结,主要包括:一些关键字.权限修饰符的使用.重载.构造器.代码块.内部类.封装.继承.多态.抽象.javabean.单元测试.包装类Object类.设计模式的 ...
- 杨校老师课堂之Java面向对象知识点整理集锦
目录 第一部分 Java面向对象 1.开发环境搭建及开发工具eclipse使用 2.类和对象 3. 成员变量和局部变量区别 4. 数据类型 5.构造函数 6.函数 7. 成员变量的初始化 8. thi ...
- Java面向对象知识点总结(全)
1.封装 定义 封装就是把对象的属性(状态)和方法(行为)结合在一起,并尽可能隐蔽对象的内部细节,成为一个不可分割的独立单位(即对象),对外形成一个边界,只保留有限的对外接口使之与外部发生联系. 原则 ...
- Java面向对象知识点精华
- Java面向对象知识点小结
再小的帆也能够远航
- java面向对象编程知识点总结
一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...
- JAVA 面向对象和集合知识点总结
转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46481759 在Android编程或者面试中经常会遇到JAVA 面向对象和集合的 ...
- ⑦Java SE知识点回顾与小结(面向对象)
Java SE 面向对象 一.面向对象的优点: 1)面向对象的思维方式更贴近于现实生活的思维方式 2)面向对象思维方式更体现于管理者,面向过程体现于执行者 3)可以将复杂的问题简单化 二. ...
- Java面向对象(知识点整理)
文章目录 面向对象 类与对象 匿名对象 创建对象的内存分析 栈(stack) 堆(heap) 方法区 PC寄存器 本地方法栈 内部类 成员内部类 局部内部类 匿名内部类 静态内部类 包装类 拆箱和装箱 ...
最新文章
- 安防AI芯片“战国时代” 谁能稳坐钓鱼台?
- POJ 1989 贪心
- C++用数组和链表分别实现Stack
- VS2010 ASP.NET MVC4 安装失败问题
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
- 从无到有算法养成篇-双向链表与双向循环链表
- bash: vim: command not found
- Applied Functional Analysis(Applications to Mathematical Physics ) E.Zeidler
- 当常规的算法都山穷水尽之后,你可以试试python中的SMOTE算法
- iisS7 配置SSL 绑定主机头实现多站点访问
- 一款“灵动”的滑动按钮
- 基于框架的全局配置模型
- 8.BLE---错误码
- 人工智能的高层建筑取决于数据基础设施
- HTML和CSS实现京东首页(html和css详解)
- igl或者libigl库的使用
- matlab绘制心形函数
- 昆石VOS2009/VOS3000 2.1.6.00 操作指南
- 计算机app无法删除,电脑软件卸载不掉怎么办?软件删除不掉解决技巧
- 火雷噬嗑 (易經大意 韓長庚)