JAVSE_Day02面对对象(封装/继承/多态/抽象)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

类的定义:

类:具有相同特性(状态)和行为(功能)的对象的抽象就是类,因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。 类具有特性:对象的状态,用成员变量来描述。 类具有功能:对象的为用方法来描述.什么是类:类是对象的类型/模板。创建一个对象就是使用一个类作为构建该对象的基础不过在面向对象编程里,我们肯定是先有类 如果没有类,对象就没有实例化。

--------------------------------分割线-----------------------------------------------------


package com.anonymous.javase.day02;

public class Demo_Day02 {
	//类的定义
	/**
	 * [修饰符] class 类名{
	 * 		0~N个字段;
	 * 		0~N个方法;
	 * }
	 */
	String name = "杰克";
	int age = 23;
	
	public static void f1(){
		System.out.println("测试函数1");
	}
	//主程序,运行所有程序的入口
	public static void main(String[] args) {
		
	}
}


package com.anonymous.javase.day02;

//对象的创建和字段,方法的调用
public class Demo2_day02 {
	String name ;
	int age ;
	public void f1(){
		System.out.println("name"+name+"\n"+"age:"+age);
	}
	public static void main(String[] args) {
		//创建对象
		Demo2_day02 demo = new Demo2_day02();
		demo.name = "杰克";
		demo.age = 34;
		demo.f1();
	}
}

----------------------------


构造器的定义和重载:

package com.anonymous.javase.day02;

//构造器的重载和自定义
public class Demo3_day02 {
	String name;
	String age;
	static String gender ;
	//static关键字的使用
	/**
	 *static代表全局的修饰符
	 *调用static修饰的方法或者字段,直接类名调用即可
	 */
	/**
	 * 为何使用static修饰
	 * 比如这eat(表示吃的方法),
	 * 如果同时有5个对象,这样我每个对象都要去写一次eat方法
	 * 5个对象既然都要吃,就把他们设计成共享的数据,
	 * 让一个对象创建,其他对象共享就行了
	 */
	public static void eat(){
		System.out.println("gender"+gender+"\n"+"吃");
	}
	//无参构造器
	public Demo3_day02(){
		
	}
	
	//有参构造器
	public Demo3_day02(String name ,String age){
		
	}
	/**
	 * 构造的规则:
	 * 修饰符 构造器名([参数]...[参数]){
	 * }
	 */
	
	public static void main(String[] args) {
		//有参构造器对象
		Demo3_day02 demo1 = new Demo3_day02("杰克" ,"34");
		//无参构造器对象
		Demo3_day02 demo2 = new Demo3_day02();
		
		//使用static修饰的方法(字段也是同样的道理)
		Demo3_day02.eat();
		Demo3_day02.gender="男";
	}
	/**
	 * 默认情况下:我们在没有设置任何构造器的情况下,
	 * JVM会自动帮助我们生成一个无参的构造器,(可以使用反编译工具查看)
	 * 如果我们设置一个有参的构造器,
	 * 我们必须自己手动的去设置一个无参的构造器
	 * 否者使用的时候会报错
	 */
}



变量的作用域:

package com.anonymous.javase.day02;

public class Demo4_day02 {
	//成员变量(也称之为全局变量)
	//使用static修饰
	static String name;
	//不使用static修饰
	String age;
	public static void main(String[] args) {
		//局部变量
		int source  = 89;
		String gender = "男";
		for (int i = 0; i < 90; i++) {
			System.out.println(i);
		}
		//	这里的i就访问不到了..限制了作用域只能在for循环中使用
		//System.out.println(i);
		
	}
}

使用成员变量和局部变量的问题?!

变量生命周期:


封装:

package com.anonymous.javase.day02;

//封装
class Student{
	String name ;
	String age;
	
	private String gender;
	private String height;
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getHeight() {
		return height;
	}
	public void setHeight(String height) {
		this.height = height;
	}
	
}

public class Demo5_day02 {
	public static void main(String[] args) {
		Student student = new Student();
		student.name = "ROSE";
		student.age = "34";
		student.name = "KAC";
		student.age = "34";
		/**
		 * 这样设计不合理:
		 * 不能让调用者直接解除数据,从而篡改数据
		 */
		
		//解决
		/**
		 * 使用get和set方法进行设置值和获取值.
		 * 不能让用户直接对数据进行修改(这样不能体现面对对象的思想),
		 */
		student.setGender("男");
		student.setHeight("189");
		String gender = student.getGender();
		String height = student.getHeight();
		System.out.println(gender+height);
		
		
	}
}

继承:


package com.anonymous.javase.day02;
//子类
class Son extends Father{
	public void f1(){
		super.f1();
		System.out.println("456");
	}
}

//父类
class Father{
	public void f1(){
		System.out.println("123");
	}
}


//测试类
public class Demo6_day02 {
	public static void main(String[] args) {
	Father son = new Son();
	son.f1();
	}
}

多态:

package com.anonymous.javase.day02;
//父类
class Animal{
	public void eat(){

	}
}
//子类
class Cat extends Animal{
	public void eat(){
		System.out.println("(猫)喂养中...");
	}
}
//子类
class Dog extends Animal{
	public void eat(){
		System.out.println("(狗)喂养中...");
	}
}

//喂养者
class People{
	//喂养狗
	public void feed(Dog d){
		d.eat();
	}
	//喂养猫
	public void feed(Cat c){
		c.eat();
	}
}

/**
 * 上面没有使用多态思想
 */


/**
 * 使用多态思想
 */

class People2{
	//喂养狗
	public void feed(Animal a){
		a.eat();
	}
}
public class Demo7_day02 {
	public static void main(String[] args) {
		People people = new People();
		
		people.feed(new Dog());
		people.feed(new Cat());
	}
}

抽象:


package com.anonymous.javase.day02;
abstract class TestTime{
	//抽象类中可存在方法体
	//模板方法(不允许子类覆盖加上final)
	final public void getTime(){
		//开始时间
		long begin = System.currentTimeMillis();
		this.doWork();
		//结束时间
		System.out.println(System.currentTimeMillis()-begin);
		
	}
	
	//抽象方法
	abstract public void doWork(); 
}

class Sub1 extends TestTime{

	@Override
	public void doWork() {
		for (int i = 0; i < 10000; i++) {
			i+=1;
		}
	}
	
}

class Sub2 extends TestTime{

	@Override
	public void doWork() {
		String str = "";
		for (int i = 0; i <100000; i++) {
			str+=i;
		}
	}
	
}

public class Demo8_day02 {
	public static void main(String[] args) {
		new Sub1().getTime();//0
		new Sub2().getTime();//13144
	}
}

JavaSE、JavaEE 与 JavaWeb 的详解与区别 在Java开发的世界中,Java被广泛应用于各种领域,并发展出多个版本和技术分支。其中,JavaSE(Java Standard Edition)、JavaEE(Java Enterprise Edition)、JavaWeb是Java开发者常常接触的几个重要分支。它们各自适用于不同的应用场景,并在开发中发挥着不同的作用。本篇博客将详细介绍JavaSE、JavaEE、JavaWeb的概念、特点以及它们之间的区别。 阅读详情

相关推荐

JavSE5(中文版)API

JavSE5(中文版)API + JavSE5(中文版)API +JavSE5(中文版)API

javse(2023/11/17)

1、单例模式(static实践) 2、final关键字 3、抽象类 4、模板设计模式(实践抽象类) 5、接口 6、内部类

longbow_nice的博客 607

JAV LED32HD320 LAD.MV59S.B MT3151A04-1-XC-9 7J.rar

JAV LED32HD320 LAD.MV59S.B MT3151A04-1-XC-9 7J JAV LED32HD320 LAD.MV59S.B MT3151A04-1-XC-9 7J

JavaSE —— 000基础版

本篇文章主要面向于0基础学习java的读者。里面详细介绍了java语言基础、运算符、控制语句、方法、面向对象编程、关键字、多态等基础知识。十分适合初学者。

xgjdl1314的博客 1万+

Java中JavaSE与JavaEE的区别

JavaSE和JavaEE都是Java技术的重要组成部分,但它们在功能、用途和设计理念上都有所不同。JavaSE提供了基础的编程功能和API,适用于开发桌面和简单服务器端应用程序;而JavaEE则提供了企业级功能和API,适用于开发大型、分布式的企业级应用。在实际应用中,应根据项目需求选择合适的Java平台版本,并结合成熟的开发框架和工具来提高开发效率和代码质量。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章JavaSE与JavaEE的区别JAVAEE和项目开发——web实战案例。

ning的博客 3111

JavaEE vs JavaSE:Java开发的两大世界深度解析

JavaEE vs JavaSE:Java开发的两大世界深度解析

weixin_37840904的博客 1540

javse接口的应用:工厂模式

package zhang.javase.TestFactory; /** 工厂方法的设计模式 @作者:小章鱼 *通过接口可以实现不相关类之间的相同行为,而不需要考虑这些类的层次关系 *通过接口可以指明多个类与要实现的方法,一般可以用定义的对象扩张功能 *接口主要来定义规范,解除耦合关系 */ public class Testfactory { public static void main(...

qq_43257103的博客 1590

【JAVASE基础】字节输入流

4.字节输入流 java.io.InputStream是所有字节输入流的超类:可以读取任何类型文件 ●读取字节的方法read 。int read)读取单个字节,读取到流的末尾返回-1 。int read(byteD b)读取字节数组,读取到流的末尾返回-1 43.1 FileInputStream ●构造方法: FileInputStream(File file) ●构造方法: FileInputStream(String file) 。创建字节输入流对象绑定参数就是要读取的数据源文件 package co

yu_fu_a_bu的博客 373

Java项目的打包

1 javse打包 : exort 运行命令 java -jar 包名 2javaee打包 方法一: export war file 然后移动到Tomcat    webapps 下 启动tomcat http://localhost端口/目录名/jsp名  方法二: 或者用eclipse添加到 service 中 启动tomcat 然后找到eclipse 工作空间

土豆牛肉拌面 859

Object类的方法

Object类一共有13个方法 1、clone方法:保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是Java里除了8种基本类型传参数是值传递,其他的对象传参数都是引用传递,我们有时候不希望在方法里将参数改变,这时就需要在类中书写clone方法。 2、...

190

http://www.robinhowlett.com/blog/2013/02/13/spring-app-migration-from-xml-to-jav

NULL 博文链接:https://laravel.iteye.com/blog/2175915

Java - JavaSE - 概述

概述 常用 DOS 命令 功能 如何实现 进入不同的磁盘 D: 查看当前目录所有文件和文件夹 dir 创建文件夹 md test 进入文件夹 cd test 退回到上一级目录 cd… 删除文件 del test.txt 删除多个同类型文件 del *.txt 删除空文件夹 rd test 删除非空文件夹,使用下列命令后提示选择 Y del test ...

ChenBin113 531

Java SE,Java EE:到底是什么

JavaSE是Java的标准版,提供基础语法、类库和运行环境,是Java开发的核心基础。JavaEE则是基于SE的企业扩展版,增加了Servlet、JPA等企业级规范,适用于开发大型Web应用和分布式系统。两者关系为:SE是必学基础,EE是进阶选择,开发企业应用需先掌握SE再学习EE的核心技术。学习路径建议从SE开始,逐步过渡到EE相关框架。

m0_73884648的博客 2129

java学习流程

Java SE 是的缩写,中文译为「Java 标准版」。你可以把它理解为 Java 技术体系的基础核心它是整个 Java 生态的基石,包含了 Java 最核心的语法、类库和运行环境。主要用于开发桌面应用(如 Swing 程序)、控制台程序,也是学习 Java EE(企业版)、Java ME(微型版)的前提。我们常说的「学 Java 基础」,本质上就是学 Java SE 的核心内容。控制台程序(比如学生管理系统):直接在本地运行,只有你自己能操作;

2402_85897470的博客 431

JavaSE基础语法(成为Java大神的必经之路)

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。

2301_78341216的博客 2304

JavaSE 基础知识

本文将对Java的三大特性:封装继承多态进行简单的说明,涉及abstract、final、static、implements、extends……等关键字,主要对父类和子类的继承、方法的重载和重写进行详细的叙述。

weixin_53850894的博客 1780

How to resolve java.lang.ClassNotFoundException in Java

ClassNotFoundException is one of java nightmare everybody face in there day to day life.this is one error which occurs by and now and chew up of your precious time while finding and fixing cause of

Fred Lee的程序人生 4056

Java爬取豆瓣Top250简单实现

首先引入依赖: <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.12.1</version> </dependency> import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import

吹灭读书灯 一身都是月的博客 4815

webview的一个崩溃

android webview

yeshen.org 1409
上一篇: JAVASE复习day01-面向过程部分(只有重点)
下一篇: 设计方法-----单利模式(懒汉式和饿汉式)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值