第31节:Java基础-类与对象

前言
Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量。
方法的重载:成员方法的重载和构造方法的重载
方法的重载
在一个类中可以有多个方法具有相同的名字,但是这些方法的参数个数不同,或参数类型不同,即为方法的重载。
class Demo{
// one
void dashu(String name){
System.out.println(name);
}
// two
void dashu(String name,String score){
System.out.println(name+score);
}
// three
void dashu(String name,String score,Int age){
System.out.println(name+score+age);
}
public static void main(String[] args){
Demo demo = new Demo();
demo.dashu("dashucoding");
demo.dashu("dashucoding","一百");
demo.dashu("dashucoding","一百",10);
}
}
构造方法的重载
class Person{
String name;
int age;
float height;
float weight;
// 构造方法
public Person(){
age = 13;
name="dashu"
}
public Person(String name){
this.name = name;
}
// 构造方法的重载
public Person(String name, int age){
this.name = name;
this.age = age;
}
void print(){
System.out.println(name+age);
}
}
class Test{
public static void main(String[] args){
Demo demo1,demo2,demo3;
demo1 = new Demo();
demo2 = new Demo("dashu");
demo3 = new Demo("dashu",12);
demo1.print();
demo2.print();
demo3.print();
}
}
static关键字
被static修饰的变量为静态变量
被static修饰的方法为静态方法
静态变量属于类而不属于类的某个实例,可被直接类名调用,所以叫类变量
静态方法属于类而不属于类的某个实例,可被直接类名调用,所以叫类方法
非静态的成员变量和方法,必须通过实例化后通过对象名来调用
所以叫实例变量和实例方法
实例变量和实例方法通过实例调用,类变量和类方法同样也可以通过实例调用
这点要注意
main()方法
main()方法为静态的,在java虚拟机中执行main()方法时不需要创建main()方法所在类的实例就可调用,因为有static修饰。
例子
class Demo{
// 定义静态的成员变量
static int x;
int y;
// 定义静态的成员方法,用来获取值
public static int getX(){
return x;
}
// 定义静态的成员方法,用来设置值
public static void setX(int newX){
x = newX;
}
public int getY(){
return y;
}
public void setY(int newY){
y = newY;
}
}
静态方法可以调用同类的静态成员,不能调用非静态成员,反之能;静态成员可通过类名调用,也可通过实例对象,静态方法中不能使用
this和super。
this关键字
this代表使用该方法的当前的对象,只用于实例方法或者构造方法中。
void setAge(int age){
this.age = age;
}
Person(String name, int age){
this.name = name;
this.age = age;
}
包
在java中提供了不同的类和接口存放在不同的包中。
常见的包
java.applet
java.awt
java.net
java.util
java.lang
java.io
包的格式:
package 包名[.子包名[…]];
引入java包
import 包层次结构的类名;
访问权限
修饰符:
public、private、protected、友好
private变量和方法
访问权限最小,只能在同一个类中被访问,私有成员可以被对象实例调用,方法被对象实例调用,静态成员可以被类名直接调用。
class Demo{
private static String name;
private int age;
private void print(){
System.out.println(name+age);
}
public static void main(String[] args){
Demo.name = "dashu";
Demo d = new Demo();
d.age = 12;
d.print();
}
}
private,类中的私有变量不能被另一个类所引用,私有变量和方法只能在本类中使用。
class Demo{
private static String name;
private int age;
private void print(){
System.out.println(name+age);
}
public static void main(String[] args){
Demo.name = "dashu";
Demo d = new Demo();
d.age = 12;
d.print();
}
}
// 另一类
class Da{
public static void main(String[] args){
// 非法使用
Demo.name = "dashu";
// 非法调用
Demo d = new Demo();
d.print();
}
}
public访问修饰符,它的访问权限在不同类,不同包的类中访问
默认,友好权限只能被同类或同包中的不同类引用
protected不能在不同包中的类所引用
| 访问权限 | public | protected | 友好 | private |
|---|---|---|---|---|
| 同类 | 可以 | 可以 | 可以 | 可以 |
| 同包不同类 | 可以 | 可以 | 可以 | |
| 不同包子类 | 可以 | 可以 | ||
| 通用 | 可以 |
类的继承
在java中可以单继承,不支持多继承,一个子类只能有一个父类,不能有多个,但一个父类可以有多个派生的子类。
public class Person{
String name;
int age;
public void setAge(int age) {
this.age=age;
}
public void out() {
System.out.println("姓名:"+name+" 年龄:"+age+"岁");
}
}
// 子类继承父类
public class Student extends Person{
...
}
继承性
子类继承父类,可以继承父类中非私有成员(子类和父类在同一包中),如果不在同一包中,子类只能继承父类中受保护的和公有的成员。
方法的重写
方法的重写,子类覆盖父类的方法,定义了与父类相同名,相同类型,并且相同参数的方法。
super变量
super,提供了对父类的访问,可以访问父类被子类的隐藏的变量和覆盖的方法。
结语
- 本文主要讲解 Java基础-类与对象
- 下面我将继续对
Java、Android中的其他知识 深入讲解 ,有兴趣可以继续关注 - 小礼物走一走 or 点赞
第31节:Java基础-类与对象的更多相关文章
- JAVA基础——类和对象
java类与对象学习笔记 一.成员变量和局部变量 (1)定义 1.成员变量 在类中定义,用来描述对象将要有什么.(默认的成员变量值为0) 2.局部变量 在类的方法中定义,在方法中临时保存数据. 演示示 ...
- Java基础-类和对象
类和对象 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是一个模板,它描述一类对象的行为和状态. ...
- Java基础—类和对象
基本概念 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提 ...
- Java基础——类和对象的初始化过程
本节把类和对象的初始化所涉及到的所有代码块阐述一边. 示例代码: public class Demo { private static String name; private String age; ...
- java基础---类和对象(4)
一. static关键字 使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层级提升为类层级,整个类共享一份静态成员变量,该成员变量随着类的加载准备就绪,与是否创建对象无关 使用st ...
- java基础---类和对象(1)
一. 类和对象 面向对象:以属性和行为的观点去分析现实生活中的事物,将功能封装进对象, 强调具备了功能的对象,以类/对象为最小单位,考虑谁来做 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做 ...
- java基础---类和对象(3)
一.Object类 java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类 如果定义一个Java类时没有使用extends关键字声明其父类,则 ...
- java基础---类和对象(2)
一.继承(extends) 面向对象的三大特性之一,当多个类中存在相同属性和行为时,将这些内容抽取到一个公共类中,让多个类(子类)吸收公共类(父类.超类)中已有特征和行为,而在多个类型只需要编写自己独 ...
- Java基础-IO流对象之字符类(FileWrite与FileReader)
Java基础-IO流对象之字符类(FileWrite与FileReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见编码简介 1>ASCII 我们知道计算机是 ...
随机推荐
- 项目(三)PXE高效能批量网络装机
PXE:预启动执行环境 PXE是由intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统. 若要搭建PXE网 ...
- react-native 新手爬坑经历(unable to load script from assets 和could not connect to development server.)
按照https://reactnative.cn/docs/0.51/getting-started.html教程新建的项目 react-native init AwesomeProject cd A ...
- CAFE: a computational tool for the study of gene family evolution
1.摘要 摘要:我们提出了CAFE(计算分析基因家族进化),这是一个统计分析基因家族进化规模的工具.它使用随机的出生和死亡过程来模拟一个系统发育过程中基因家族大小的进化.对于一个特定的系统发育树,并给 ...
- linux下redis4.0.2集群部署(利用Ruby脚本命令)
一.原生命令方式和Ruby脚本方式区别 利用Ruby脚本部署和用原生命令部署,节点准备的步骤都是一样的,节点启动后的握手,以及主从.槽分配,利用Ruby脚本一步就能完成,利用原生命令需要一步一步地执行 ...
- 数据库常用操作(mysql)
创建 create database 库名 create table 表名(列名 type(varchar(size),int(size),decimal(size,d))) "size&q ...
- Linux vfpd锁定用户目录
在linux ftp配置中,为了防止用户cd 到其他目录,需要锁定用户的根目录. Step1:修改配置文件 [root@ess ~]# vi /etc/vsftpd/vsftpd.conf #chro ...
- 【python中二叉树的实现】python中二叉树的创建、三种方式递归遍历和非递归遍历
代码如下: # coding=utf-8 class myNode(object): def __init__(self, data=-1, lchild=None, rchild=None): se ...
- 50 【Go版本变化】
Go的版本介绍:https://golang.org/project/ https://golang.org/doc/go1.4 #Go1.4# 语言层面变化较少,但是编译器而言是有巨大的突破的,体现 ...
- 信号基础知识---单频矩形脉冲信号CW
%CW%参考:声呐技术 P27,31clc;close all;clear all;%参数-------------------------f0=50;T=0.1;%时宽B=1/T;fs=1000;% ...
- MQ消息队列在软件开发中的作中
MQ的作用是非常之大的. 1.解耦. 当一个大型的系统.比如,商城系统.包括以下的功能: 1.发邮件 2.发短信 3.抽奖 4.搜索等 如果你都用一台服务器,做到一个程序里,代码会非常庞大,不利于维护 ...