第32节:Java中-构造函数,静态方法,继承,封装,多态,包

构造函数实例
class Cat{
// 设置私有的属性 name
private String name;
// 设置name的方法
public void setName(String Name) {
this.name = Name;
}
// 设置获取name的方法
public String getName() {
return this.name;
}
// 设置不带参数的构造方法
public Cat() {
System.out.println("This is a cat");
}
// 设置带参数的构造方法
public Dog(String Name) {
this.name = Name;
System.out.println("This is a cat "+name);
}
// 定义一个方法
public void sleep(){
System.out.println(this.name+ "is sleeping");
}
}
测试类
// 测试类
class CatTest {
public static void main(String[] args) {
// 定义对象
Cat cat1 = new Cat();
cat1.setName("buling");
cat1.sleep();
Cat cat2 = new Cat("LiLi");
cat2.sleep();
}
}
静态方法
class Demo {
// 定义一个函数
public void fun1() {
System.out.println("Hello");
}
// 定义一个静态函数
public static void fun2() {
System.out.println("hello");
}
}
public class DemoTest {
public static void main(String[] args) {
// 创建对象
Demo d = new Demo();
d.fun1();
// 对静态函数进行调用
Demo.fun2();
// 创建对象
Demo d2 = new Demo();
d2.fun2();
}
}
静态修饰的调用方式:1)类名.方法名;2)对象.方法名
继承
案例
在现实世界当中,继承就是儿子得到老子的东西,在面向对象的世界当中,继承就是一个类得到了另一个类当中的成员变量和成员方法
Java只支持单继承,不允许多继承,继承是为了减少重复代码
使用super调用父类构造函数的方法
class Person{
// 定义属性
String name;
int age;
// 无参构造函数
Person(){
System.out.prinltn("Person的无参数构造函数");
}
// 有参的构造函数
Person(String name,int age){
this.name=name;
this.age=age;
System.out.println("Person有参数的构造函数");
}
// 定义的方法
void eat(){
System.out.println("定义吃饭的方法");
}
}
class Student extends Person{
//子类继承父类
Student(){
//父类
super();
System.out.println("Student的无参数构造函数");
}
Student(String name,int age,int id){
super(name,age);
this.id=id;
}
}
在Java中的继承,其实就是继承全部属性和方法(除了构造方法),除了private修饰的变量或者方法,子类无法进行访问
格式:
[类修饰符] class 子类名 extends 父类名{ ... ...}
如:
class Student extends People{ ... ...}
类的继承:Object->People->Student
Java中的类只支持单继承,不支持多继承。
类成员的继承:
对于继承:一个类中有成员变量和方法。
子类继承父类,可以有部分继承它的父类,也可以自己定义。
子类能继承
public和protected的成员变量,不能继承private的成员变量,可以继承同包中的默认修饰符。
同理,子类继承父类的方法,能够继承
public和protedted的方法,不能继承private的方法,不能继承构造方法。
封装
封装为了提稿代码的复用性,隐藏了实现的细节,提供对外的访问。
// 老婆类
class Woman {
// 定义属性
private String name;
private int age;
// 私有丈夫
private Man husband;
// 获取老婆名字
public String getName() {
return name;
}
// 设置老婆名字
public void setName(String name) {
this.name = name;
}
// 设置老婆年龄
public void setAge(int age) {
this.age = age;
}
// 获取老婆年龄
public int getAge() {
return age;
}
// 设置丈夫
public void setHusband(Man husband) {
this.husband = husband;
}
// 获取男人,返回男人类
public Man getHusband() {
return husband;
}
}
// 男人类
public class Man {
// 私有化名字
private String name;
// 私有化年龄
private int age;
// 私有化老婆
private Woman wife;
// 设置名字
public void setName(String Name) {
this.name = Name;
}
// 获取名字
public String getName() {
return this.name;
}
// 设置年龄
public void setAge(int Age) {
this.age = Age;
}
// 获取年龄
public int getAge() {
return this.age;
}
// 设置老婆
public void setWife(Woman wife) {
this.wife = wife;
}
}
可将这两种方法进行封装。
多态
多态是为了提高功能的扩展性,提高复用,为父类的引用指向了子类的对象,多态,多种形态的体现。
父类引用指向子类对象,并调用子类的覆盖方法,就是多态,注意父类的引用不能随便强加转为子类类型,因为强转可能会出错,在转换前先使用instanceof判断父类是否可以转换为子类
abstract class Animal{
public abstract void eat();
}
多态原理:
Dog d = new Dog();
Animal a = new Dog();
Cat c = new Catt();
Animal aa = new Cat();
多态是同一种行为的不同表现形式或形态的能力。
多态步骤
- 有继承关系;
- 子类要重写父类的方法;
- 父类要指向子类的引用
案例
// 抽象动物类
abstract class Animal {
// 抽象的方法
abstract void eat();
}
// 子类继承父类
class Cat extends Animal {
// 重写了父类的方法
public void eat() {
System.out.println("吃鱼~");
}
// 添加了功能
public void work() {
System.out.println("抓老鼠~");
}
}
// 子类继承了父类
class Dog extends Animal {
public void eat() {
System.out.println("吃骨头~");
}
// 添加了自己的功能
public void work() {
System.out.println("看家~");
}
}
// 测试类
public class DemoTest {
public static void main(String[] args) {
// 父类指向子类的对象
// 向上转型
Animal a = new Cat();
// 调用 Cat 的 eat方法
a.eat();
// 现行判断
if(a instanceof Cat) {
// 向下转型
Cat c = (Cat)a;
// 调用 Cat 的 work 方法
c.work();
} else if(a instanceof Dog) {
Dog d = (Dog)a;
d.work();
}
}
}
包
在
java中提供了不同的类和接口存放在不同的包中。
常见的包
java.applet
java.awt
java.net
java.util
java.lang
java.io
包的格式:
package 包名[.子包名[…]];
引入java包
import 包层次结构的类名;
Java package提供了访问权限和命名的管理机制,是Java中非常重要的一个概念。为了使包名保持唯一性,通常采用小写、按倒写公司网址的形式进行定义;避免使用与jdk提供的包发生冲突的名字。
结语
- 本文主要讲解 Java中-构造函数,静态方法,继承,封装,多态,包
- 下面我将继续对
Java、Android中的其他知识 深入讲解 ,有兴趣可以继续关注 - 小礼物走一走 or 点赞
第32节:Java中-构造函数,静态方法,继承,封装,多态,包的更多相关文章
- 第79节:Java中一些要点
第79节:Java中一些要点 前言 一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢 内容 如果有人问jre,jdk,jvm是什么,你怎么回答呢? jre的英 ...
- 第78节:Java中的网络编程(上)
第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...
- 第76节:Java中的基础知识
第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...
- 第68节:Java中的MYSQL运用从小白到大牛
第68节:Java中的MYSQL运用从小白到大牛 前言 学习java必备要求,学会运用!!! 常见关系化数据库 BootStrap是轻量级开发响应式页面的框架,全局css组件,js插件.栅格系统是将页 ...
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- 第82节:Java中的学生管理系统
第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...
- 第80节:Java中的MVC设计模式
第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...
- 第77节:Java中的事务和数据库连接池和DBUtiles
第77节:Java中的事务和数据库连接池和DBUtiles 前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许 ...
- 第71节:Java中HTTP和Servlet
第71节:Java中HTTP和Servlet 前言 哭着也要看完!!!字数: 学习xml和TomCat 会写xml,看懂xml 解析对象 SAXReader reader = new SAXReade ...
随机推荐
- 2017-11-04 Sa OCT codecombat
def hasEnemy(): e = hero.findNearestEnemy() if e: return True else: return False def enemyTooClose() ...
- ArcGIS自定义工具箱-字段值部分替换
ArcGIS自定义工具箱-字段值部分替换 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:替换某个字段中的字符串 用例:湖南省长沙市=>湖南/长沙:临湘县 ...
- Python实现EXCEL表格的排序功能
EXCEL的数值排序功能还是挺强大的,升序.降序,尤其自定义排序,能够对多个字段进行排序工作. 那么,在Python大法中,有没有这样强大的排序功能呢?答案是有的,而且本人觉得Python的排序功能, ...
- CF 225C Barcode(DP)
传送门:点我 You've got an n × m pixel picture. Each pixel can be white or black. Your task is to change t ...
- eclipse中tomcat可以start启动,无法debug启动的解决
设置断点,进行程序调试,但是debug启动tomcat,却无法启动,并且会报超时异常. 原因可能是eclipse和tomcat启动时读取文件发生冲突 去掉所有的断点,然后重新debug启动,再设置断点 ...
- F4 help for month
INCLUDE rmcs0f0m. s_month FOR s001-spmon NO-EXTENSION NO INTERVALS OBLIGATORY. AT SELECTION-SCREEN O ...
- 如何访问dashed filename
第一关:boJ9jbbUNNfktd78OOpsqOltutMc3MY1 第二关:CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9 cat <- 第三关:如何访问spaces i ...
- 利用springloaded进行java jar&class的动态替换
之前已经写过一篇关于class的动态替换博客,今天我们来介绍一下如何用springloaded进行jar&class的动态替换. 首先说一下实验过程,结合了目前我正在做的项目,这个项目是一个前 ...
- 代码之髓读后感——类&继承
面向对象 语言中的用语并不是共通的,在不同语言中,同一个用语的含义可能会有很大差别. C++的设计者本贾尼·斯特劳斯特卢普对类和继承给予了正面肯定,然而,"面向对象"这个词的发明者 ...
- Python中的urllib
urllib提供了一系列URL的功能. Get urllib的request模块可以非常方便的抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP响应: 例如,对豆瓣的一个URLht ...